Tengo el siguiente código en una aplicación AngularJS, dentro de un controlador, que se llama desde una función ng-submit, que pertenece a un formulario con nombre profileForm
:
$scope.updateProfile = function() {
if($scope.profileForm.$invalid) {
//error handling..
}
//etc.
};
Dentro de esta función, ¿hay alguna forma de averiguar qué campos están causando que todo el formulario se llame inválido?
validation
angularjs
GSto
fuente
fuente
name
atributo de la entrada para verla en $ name (por supuesto). El hecho de que AngularJS se vincule a una propiedad del modelo sin la necesidad de un nombre puede hacer que sea difícil diagnosticar qué entrada no es válida.Para comprobar qué campo del formulario no es válido
esto generará la matriz de campos no válidos del formulario
fuente
Si desea ver qué campos están alterando su validación y tiene jQuery para ayudarlo, simplemente busque la clase "ng-invalid" en la consola de JavaScript.
Enumerará todos los elementos DOM que fallaron la validación por cualquier motivo.
fuente
Puede recorrer
form.$error.pattern
.fuente
Cuando algún campo no sea válido, si intenta obtener su valor, lo será
undefined
.Supongamos que tiene una entrada de texto adjunta
$scope.mynum
que es válida solo cuando escribe números y lo ha escritoABC
.Si intenta obtener el valor de
$scope.mynum
, seríaundefined
; no devolvería elABC
.(Probablemente sepas todo esto, pero de todos modos)
Entonces, usaría una matriz que tenga todos los elementos que necesitan validación que he agregado al alcance y usaría un filtro (con subrayado.js, por ejemplo) para verificar cuáles regresan como
typeof
undefined
.Y esos serían los campos que causan el estado inválido.
fuente
Quería mostrar todos los errores en la información sobre herramientas del botón Guardar deshabilitado, para que el usuario sepa por qué está deshabilitado en lugar de desplazarse hacia arriba y hacia abajo en el formulario largo.
Nota: recuerde agregar la propiedad de nombre a los campos en su formulario
fuente
Para mi aplicación, muestro un error como este:
si desea ver todo, simplemente usuario 'err' que mostrará algo como esto:
No tan bien formateado, pero verá estas cosas allí ...
fuente
Si desea encontrar campos que invaliden el formulario en la interfaz de usuario sin programación, simplemente haga clic con el botón derecho en inspeccionar (abrir herramientas de desarrollador en la vista de elementos) y luego busque ng-invalid con ctrl + f dentro de esta pestaña. Luego, para cada campo para el que encuentre una clase ng-invalid, puede verificar si al campo no se le da ningún valor mientras es requerido, u otras reglas que pueda violar (formato de correo electrónico no válido, definición fuera de rango / máximo / mínimo, etc.) . Esta es la manera más fácil.
fuente