Eu tenho o seguinte código em um aplicativo AngularJS, dentro de um controlador, que é chamado de uma função ng-submit, que pertence a um formulário com nome profileForm
:
$scope.updateProfile = function() {
if($scope.profileForm.$invalid) {
//error handling..
}
//etc.
};
Dentro dessa função, há alguma maneira de descobrir quais campos estão fazendo com que todo o formulário seja chamado de inválido?
validation
angularjs
GSto
fonte
fonte
name
atributo da entrada para vê-lo em $ name (é claro). O fato de AngularJS se vincular a uma propriedade de modelo sem a necessidade de um nome pode resultar na dificuldade de diagnosticar qual entrada é inválida.Para verificar qual campo do formulário é inválido
isso irá gerar a matriz de campos inválidos do formulário
fonte
Se você quiser ver quais campos estão atrapalhando sua validação e tiver o jQuery para ajudá-lo, basta pesquisar a classe "ng-invalid" no console javascript.
Ele listará todos os elementos DOM que falharam na validação por qualquer motivo.
fonte
Você pode fazer um loop
form.$error.pattern
.fonte
Quando algum campo for inválido, se você tentar obter seu valor, ele o será
undefined
.Vamos dizer que você tem uma entrada de texto anexada
$scope.mynum
que é válida apenas quando você digita números e você digitouABC
nela.Se você tentar obter o valor de
$scope.mynum
, seriaundefined
; ele não retornaria oABC
.(Provavelmente você sabe de tudo isso, mas enfim)
Portanto, eu usaria uma matriz que tivesse todos os elementos que precisam de validação que adicionei ao escopo e usaria um filtro (com underscore.js, por exemplo) para verificar quais retornam como
typeof
undefined
.E esses seriam os campos que causam o estado inválido.
fonte
Eu queria exibir todos os erros na dica de ferramenta do botão Salvar desativado, para que o usuário soubesse por que está desativado em vez de rolar para cima e para baixo no formulário longo.
Observação: lembre-se de adicionar a propriedade do nome aos campos do seu formulário
fonte
Para meu aplicativo, eu exibo um erro como este:
se quiser ver tudo, basta o usuário 'errar' que exibirá algo assim:
Não está bem formatado, mas você vai ver essas coisas lá ...
fonte
Se você quiser encontrar campo (s) que invalida o formulário na IU sem programação, apenas clique com o botão direito em inspecionar (abrir as ferramentas do desenvolvedor na visualização de elementos) e procurar por ng-invalid com ctrl + f dentro desta guia. Em seguida, para cada campo para o qual encontrar a classe ng-invalid, você pode verificar se o campo não recebe nenhum valor enquanto é obrigatório ou se outras regras que ele pode violar (formato de e-mail inválido, fora do intervalo / definição máx. / Mín., Etc.) . Esta é a maneira mais fácil.
fonte