@eserdk
Software Engineer, ITMO University

Как вызвать валидатор формы без нажатия на сабмит?

Приветствую всех.
Являюсь полнейшим профаном в среде фронтенд-разработки, но, тем не менее, была поручена задача:

Имеется Django-форма с виджетом, являющим собой template, в который входят nav-tabs от Bootstrap.
Нажатие на каждый таб раскрывает соответствующий textfield.
В ~/forms.py required = True на это поле.

Соответственно, содержимое всех textfield'ов за каждым nav-tab'ом должно быть заполнено.
Проблема возникает при нажатии на submit: при заполненном и активном одном textfield'е не появляется соответствующий validation pop-up, т.к. неактивные textfield'ы не имеют классов "active in" и не являются focusable.

Было принято решение воспользоваться скриптом на jQuery:
$('#client_form').find('[type="submit"]').click(function first() {
            var inputElements = $('#client_name_input textarea, #client_name_input input').filter('[required]').toArray();
            for (var i in inputElements) {
                var textAreaElement = inputElements[i];
                if (!(textAreaElement).checkValidity()) {
                    var tabId = $(textAreaElement).closest('.tab-pane').attr('id');
                    $('.nav-tabs a[href="#' + tabId + '"]').click();
                    var nextField = $("textarea[name=" + tabId + "]");
                    nextField[0].focus();
                    break;
                }
            }
        });


Вот, что делает скрипт: итерируется по всем textfield'ам и, в случае, если какой-то из них не проходит валидацию (не заполнен), переключается на него.
Все бы хорошо, но мне нужно, чтобы сразу после выполнения этого скрипта появлялся тот самый pop-up, появляющийся при нажатии на Submit, ответственный за указание того, какое поле не заполнено.

Очень надеюсь на вашу помощь.
Спасибо!

UP: альтернативные пути решения данной проблемы только приветствуются! Есть, конечно, вариант использовать alert или modal от bootstrap, но хотелось бы использовать нативный для браузера html pop-up.

UP_2: Под валидацией в текущей задаче я подразумеваю проверку всех полей required на заполненность.
  • Вопрос задан
  • 498 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы