Formit+AjaxForm - поле checkbox/radio и реакция на событие
Всем привет!
Для ФОС использую Formit+AjaxForm.
Поля, которые использую: input(text), textarea, select, checkbox и radio — они все обязательные (&validate=`field:required,...`).
Суть ситуации. Если не заполнить любое из обязательных полей и нажать Отправить, то рядом с каждым полем появляется уведомление об обязательности заполнения.
Кликаем по input(text) или textarea, вставляем любой символ — уведомление исчезает;
Кликаем по select, выбираем любое значение — уведомление исчезает;
С этими типами полей проблем нет — уведомление работает корректно.
Кликаем по checkbox или radio, ставим галку — уведомление не исчезает.
Эта ситуация конечно же не критична. Но всё же, хочется привести уведомления для checkbox и radio к общей логике поведения — чтобы после взведения галки уведомление об обязательности заполнения исчезало.
Насколько понимаю, нужно править assets/components/ajaxform/js/default.js
К сожалению, я плохо разбираюсь в этом, но вначале попробовал доработать самостоятельно(beforeSubmit: function (fields, form){ ...) — добавить типы checkbox и radio в form.find('input,checkbox, radio,textarea,select,button').attr('disabled', true);. Не помогло.
Для ФОС использую Formit+AjaxForm.
Поля, которые использую: input(text), textarea, select, checkbox и radio — они все обязательные (&validate=`field:required,...`).
Суть ситуации. Если не заполнить любое из обязательных полей и нажать Отправить, то рядом с каждым полем появляется уведомление об обязательности заполнения.
Кликаем по input(text) или textarea, вставляем любой символ — уведомление исчезает;
Кликаем по select, выбираем любое значение — уведомление исчезает;
С этими типами полей проблем нет — уведомление работает корректно.
Кликаем по checkbox или radio, ставим галку — уведомление не исчезает.
Эта ситуация конечно же не критична. Но всё же, хочется привести уведомления для checkbox и radio к общей логике поведения — чтобы после взведения галки уведомление об обязательности заполнения исчезало.
Насколько понимаю, нужно править assets/components/ajaxform/js/default.js
К сожалению, я плохо разбираюсь в этом, но вначале попробовал доработать самостоятельно(beforeSubmit: function (fields, form){ ...) — добавить типы checkbox и radio в form.find('input,checkbox, radio,textarea,select,button').attr('disabled', true);. Не помогло.
Комментарии: 15
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Артур, в любом случае, спасибо за отклик и помощь!
skrinshoter.ru/s/010922/JHg0TdiX?a
skrinshoter.ru/s/010922/AwHFH32a?a
Покажите чанк формы.
Конструкции типа [[!+fi.error.chetest]] используются для formit без ajaxForm.
Вот рабочий вариант для одного чекбокса:
скрытый инпут нужен для проверки на пустоту, иначе required-валидация пропустит. А спан с классом error_q_agree как раз и отвечает за вывод ошибок (класс строится из строки 'erorr_' + имя поля)
Спасибо за информацию!
Пробовал доработать строку в default.js:
заменив var key = $(this).attr('name'); на var key = $(this).attr('id');
или var key = $(this).attr('name'); на input[type=«hidden»][name="' + chetest[] + '"]
Понимаю, что мои попытки ничтожны.
Корректным вариантом, имхо, будет что-то подобное:
То есть проверка на оба ключа, со скобками и без. А вот как это реализовать, не знаю. По идее это должно решить вопрос, если мыслю в верном направлении.
И валидируешь chetest_control. По-другому чекбоксы валидировать нельзя, т.к. если чекбокс не выбран на сервер ничего не передаётся, я попробовал обойти, но нет до AjaxForm всё равно не доходит сообщение об ошибке и вообще информация о том, что есть какой-то там чекбокс.