#javascript #jquery #jquery-validate
#javascript #jquery #jquery-validate
Вопрос:
У меня есть настройка удаленного валидатора следующим образом
remote: {
type: "POST",
url: "/some/url",
data: {
value: function() {
return $("#field").val();
},
bypass: function() {
if ($("input:radio[name=toggleBypass]:checked").val() == "yes"){
return "yes";
}
return "no";
}
}
}
Если значение обхода равно «да», ajax всегда возвращает true.
Это работает при размытии и при отправке, но если я сброшу значения переключателей, а затем отправлю, повторная проверка не выполняется.
Например,
- Установите для toggleBypass значение «yes»
- Присвоить полю недопустимое значение
- Запустите $(«form»).validate().element(«#field»). Поскольку обход «да», он проходит.
- Установите для toggleBypass значение «нет»
- Запустите $(«form»).validate().element(«#field»). Она проходит, поскольку удаленный сервер не отправил повторную отправку.
Есть идеи, как я могу заставить его работать должным образом?
Ответ №1:
Если вы посмотрите на строку 897 в jquery.validate.js вы увидите оптимизацию:
if ( previous.old !== value ) {
Эта строка предотвращает новую проверку, если значение поля не изменилось. И поскольку вы используете validate().element()
, он проверяет только это поле, а не всю форму, поэтому он не обнаруживает изменения в toggleBypass.
Либо удалите эту проверку из источника jquery.validate, либо проверьте всю форму, а не только это поле.
Комментарии:
1. Спасибо за вашу помощь. Я попробую это завтра, когда вернусь к работе.