У меня есть следующий код в приложении AngularJS внутри контроллера, который вызывается из функции ng-submit, которая принадлежит форме с именем profileForm
:
$scope.updateProfile = function() {
if($scope.profileForm.$invalid) {
//error handling..
}
//etc.
};
Есть ли способ внутри этой функции выяснить, какие поля вызывают недействительность всей формы?
validation
angularjs
GSto
источник
источник
name
атрибут ввода, чтобы увидеть его в $ name (конечно). Тот факт, что AngularJS привязывается к свойству модели без необходимости в имени, может привести к тому, что будет трудно диагностировать, какой ввод недопустим.Для проверки, какое поле формы недействительно
это выведет массив недопустимых полей формы
источник
Если вы хотите увидеть, какие поля портят вашу проверку, и у вас есть jQuery, чтобы помочь вам, просто найдите класс «ng-invalid» в консоли javascript.
В нем будут перечислены все элементы DOM, которые не прошли проверку по какой-либо причине.
источник
Вы можете перебрать
form.$error.pattern
.источник
Если какое-либо поле недействительно, если вы попытаетесь получить его значение, оно будет
undefined
.Допустим, у вас есть прикрепленный к нему текстовый ввод,
$scope.mynum
который действителен только тогда, когда вы вводите числа, и вы ввелиABC
его.Если вы попытаетесь получить значение
$scope.mynum
, оно будетundefined
; он не вернетABC
.(Наверное, ты все это знаешь, но все равно)
Итак, я бы использовал массив, в котором есть все элементы, требующие проверки, которые я добавил в область видимости, и использовал бы фильтр (например, с underscore.js), чтобы проверить, какие из них возвращаются как
typeof
undefined
.И это будут поля, вызывающие недопустимое состояние.
источник
Я хотел отобразить все ошибки в подсказке отключенной кнопки «Сохранить», чтобы пользователь знал, почему она отключена, вместо того, чтобы прокручивать длинную форму вверх и вниз.
Примечание: не забудьте добавить свойство name в поля вашей формы
источник
Для моего приложения я отображаю такую ошибку:
если вы хотите видеть все, просто введите user 'err', который отобразит что-то вроде этого:
Не так хорошо отформатирован, но вы увидите эти вещи там ...
источник
Если вы хотите найти поля, которые аннулируют форму в пользовательском интерфейсе без программного обеспечения, просто щелкните правой кнопкой мыши и проверьте (откройте инструменты разработчика в представлении элементов), а затем найдите ng-invalid с помощью ctrl + f внутри этой вкладки. Затем для каждого поля, для которого вы найдете класс ng-invalid, вы можете проверить, не присвоено ли полю какое-либо значение, пока оно требуется, или другие правила, которые оно может нарушать (недопустимый формат электронной почты, определение вне диапазона / макс / мин и т. Д.) . Это самый простой способ.
источник