jquery проверяет и asp.net - проясняет правила?
-
05-07-2019 - |
Вопрос
Я использую фантастический плагин 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
находится в первом разделе формы.