Внимание набора на первый недопустимый вход в форме AngularJs

Я прочитал несколько статей и вопросов о StackOverflow, касающихся установки фокуса в AngularJs.

К сожалению, все примеры, которые я считал, предполагают, что существует некоторый атрибут, который я могу добавить к элементу для получения фокуса, например, focusMe директивы.

Однако, что, если я не знаю заранее, который вводит для установки фокуса на? В особенности, как я устанавливаю фокус на первый входной элемент в форме, которой установили $invalid - т.е. элемент, который приводит проверку к сбою. Могло быть несколько исходных данных, которые приводят проверку к сбою, таким образом, я не могу использовать директиву, которая просто пытается назвать .focus () на основе этого. (Я делаю это по причинам Accessibility/WCAG, его хорошая практика, чтобы сделать так на отправляют быть нажатым для уменьшения нажатий клавиш для нахождения первого поля, которое привело проверку к сбою).

Объект $error даст все средства управления, которые приводят проверку к сбою, но они сгруппированы типом отказа не в любом порядке появления на форме.

Я уверен, что могу придумать некоторый kludged способ сделать это. Директива по форме, которая получает некоторую широковещательную передачу, когда фокус должен быть установлен - что директива может затем искать первый элемент $invalid. Однако это кажется очень сложным, и я хотел бы знать, являются ли они лучшим больше 'углового' способа сделать это.

60
задан 23 May 2017 в 15:34

1 ответ

Незначительная тонкая настройка с тем, какой сказанный @Sajan работал на меня,

angular.element("[name='" + this.formName.$name + "']").find('.ng-invalid:visible:first')[0].focus();
0
ответ дан 1 November 2019 в 10:01

Другие вопросы по тегам:

Похожие вопросы: