Вопрос

Я использую фантастический плагин jquery .validate от Йорн Заефферер , басист

Я использую asp.net, поэтому у меня есть одна длинная форма, хотя форма разбита на 3 секции с помощью аккордеона jquery с кнопками для переключения между панелями аккордеона.

Я хочу, чтобы кнопка на первой панели проверяла поля первой панели, то же самое со второй панелью и т.д.

Очевидно, что при любой другой технологии я бы использовал несколько форм и не испытывал никаких трудностей, хотя я не могу сделать это в .net.

Я подумай то, что мне нужно, - это почти $('#aspnetForm').validate().unbind() или что-то подобное - при нажатии на аккордеон я прошу повторно подтвердить форму, чтобы я знал, на какой странице я нахожусь, и тогда я мог бы просто настроить новые правила и т.д.

Я попытался разобраться с правилами $('#aspnetForm').validate().rules('remove') хотя, кажется, мне пришлось бы делать это для каждого поля, а не для самой формы?

Я могу опубликовать любые необходимые примеры кода, хотя общий сценарий сейчас довольно большой, так что мне пришлось бы выкапывать куски.

Надеюсь, вышесказанное имеет логический смысл - по сути, средство очистки всех правил, чтобы я мог создавать новые, потому что я нахожусь в другой панели accordion, - это решение, на которое я надеюсь, хотя и испытываю трудности.

Большое спасибо, Терри

Это было полезно?

Решение 2

это действительно то, что я делал, и после некоторой длительной работы с firebug, похоже, один из селекторов не был очищен, поэтому загружались неправильные правила.

Теперь они разрешены, каждый вызов .validate имеет свой собственный набор правил, и отмените (скажем) событие .click, они не кажутся аддитивными, поэтому page1.validate с 3 правилами удаляет все правила page2.validate.

Спасибо за ваш вклад, хотя idrumgood пометил ваш ответ, чтобы сказать спасибо за любой вклад.

Твое здоровье, Терри

Другие советы

Я бы попробовал установить флаг, когда любая часть формы отображается как

<div id="form_section_1" class="displayed">
     ....
</div>
<div id="form_section_2">
     ....
</div>
<div id="form_section_3">
     ....
</div>

Затем в правилах проверки сделайте их условными.

if($('#form_section_1').attr('class').search('displayed') != -1){
     var is_section_1_displayed = true;
}
else{ var is_section_1_displayed = false;

Сделайте это для каждого (возможно, более эффективным способом)

Тогда в ваших правилах валидации сделайте что-то вроде

email: {
         required = is_section_1_displayed;
       }

Предполагается, что email находится в первом разделе формы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top