Выберите Box Проблемы с проверкой Jquery - PullRequest
0 голосов
/ 04 июля 2010

На моей странице 9 полей выбора, содержащих множество подкатегорий для предприятий.Я требую, чтобы пользователь выбрал опцию только из 1 выбора из 9.Чтобы улучшить взаимодействие с пользователем, я скрываю все поля выбора с помощью CSS и генерирую динамический блок выбора категорий.Когда в сгенерированном раскрывающемся списке выбрана категория, отображается поле выбора подкатегорий, скрытое с помощью CSS.

Моя проблема заключается в том, что при отправке формы проверка не работает.При дальнейшей проверке с помощью firebug похоже, что проверка запускается, но только для первой скрытой ячейки выбора (еда и питье).Если вы посмотрите на страницу примера, которую я собрал, все работает так, как я надеюсь на категорию еды и питья:

http://www.clawg.co.uk/jstest/errortest.html

* No category submit form show error message
* No subcategory submit form show error message
* Change category or subcategory to blank show error message

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

Это действительно сводит меня с ума.Пожалуйста, помогите

1 Ответ

1 голос
/ 04 июля 2010

Здесь есть пара вещей.

Причина, по которой все остальные параметры, кроме первых двух, не подтверждаются при отправке, заключается в том, что вы назвали все остальные элементы выбора одинаковыми ("category []"). Просматривая код validate.js, при создании списка элементов для проверки во время отправки он выбирает только первый элемент с заданным именем, к которому прикреплены какие-либо правила (строка 444). Из-за того, как он проверяет, есть ли у элемента какие-либо правила (по имени), он всегда выбирает ваш первый выбор с именем «cateogory []», даже если вы фактически добавили правило к одному из других ваших выборов.

Тем не менее, проверка будет срабатывать, когда ваш выбор получает фокус (и теряет его, или меняется), как вы обнаружили. Процесс для выполнения этого является отдельным от процесса, который выполняется при отправке формы, где он должен проверить все элементы формы.

Вы можете использовать Firebug для установки точек останова в файле jquery.validate.js, чтобы вы могли видеть, что там происходит.

...