AjaxForm убивает <select>?
Всем доброго дня!
Понадобилось поставить в форму, которую обрабатывает FormIt через AjaxForm (в. 1.1.5), обычный select. Ну казалось бы всё просто. Всё сделал, форма уходит, данные приходят. Стал проверять форму на «дурака». Оказалось, что после второй неправильной попытки заполнения формы и при незаполненном select'е, он становится пустым. Т.е. было:
Вот ссылка на формы: Тест форм
Шансов конечно не много, что пользователь будет таким дЭбилом, что два раза неправильно заполнит форму и при этом забудет про селект, но надеятся на это не хочу. Куда копать, чтобы решить проблему?
Понадобилось поставить в форму, которую обрабатывает FormIt через AjaxForm (в. 1.1.5), обычный select. Ну казалось бы всё просто. Всё сделал, форма уходит, данные приходят. Стал проверять форму на «дурака». Оказалось, что после второй неправильной попытки заполнения формы и при незаполненном select'е, он становится пустым. Т.е. было:
<select id="numbers" name="numbers" value="">
<option value="">Select an option...</option>
<option value="one">One</option>
<option value="two">Two</option>
<option value="three">Three</option>
</select>После второй валидации стало:<select id="numbers" name="numbers" value=""></select>Не поленился, нашёл jscript для обработки формы без AjaxForm. Всё нормально — селект при любом количестве неправильных попыток не опустошается.Вот ссылка на формы: Тест форм
Шансов конечно не много, что пользователь будет таким дЭбилом, что два раза неправильно заполнит форму и при этом забудет про селект, но надеятся на это не хочу. Куда копать, чтобы решить проблему?
Комментарии: 17
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Строка, из-за которой опустошается селект, была найдена быстро (default.js)
А вот дальше начались танцы с бубном и призывом грома — я попробовал не находить строчку, а фильтровать, пробовал искать по атрибуту «name», ничего не изменилось. А потом покурил, стукнул в бубен и спросил: «О великий селект, почему ты глючишь?» И ответил селект: «А мне имя класса не нравится!» Вот тут я выпал в осадок, но поменял строчку
и всё заработало. На всякий случай убрал все стили (мало ли). Те же яйца, вид сбоку.
Итого: Василий с ГитХабом у меня еще хуже, чем с js, сможешь изменить класс «error» для полей на какой нибудь другой, например на «field-error»?
Разбирайся, почему у тебя на сайте так происходит. Это явно локальная проблема.
Ну и эта, можно же переименовать скрипты, изменить как угодно и указать новое имя в настройках — всё будет работать и не перезапишется при обновлении.
Вот содержимое селекта с классом «error» и обнуляется.
Главное — проблема локализована. Как ее решить с наименьшими потерями для всех, вряд ли подскажу, как я уже писал — не особо я разбираюсь в js, чуть-чуть jQuery умею. Время есть, а если кто-то столкнётся с проблемой, то хоть не будет биться головой об стенку, как я вчера.
Если нужна помощь в тестировании — всегда пожалуйста.
В коде тоже все верно, там ничего менять не нужно. form.find('.error').html(''); выполняется для спана с текстом ошибки, а не для самого элемента.
И где вы это увидели? В строке про span нет ни слова. Обнуляются всё html содержимое елементов с классом .error. Обычные инпуты и текстареа не имеют html содержимого, поэтому их это не задевало. А вчера — сошлись звезды и понадобилась мне аджакс форма с селектом.
После строчки
Вставил
Строку
Изменил на
После сроки
Добавил
И блок
Изменил на
Т.е. теперь инпутам, селектам и прочим полям присуждается класс .field-error, вместо .error.
Ну и css слегка подправить нужно.
строку
заменить на