проверка jquery: запуск удаленной проверки снова без изменения значения соответствующего поля

#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.

Это работает при размытии и при отправке, но если я сброшу значения переключателей, а затем отправлю, повторная проверка не выполняется.

Например,

  1. Установите для toggleBypass значение «yes»
  2. Присвоить полю недопустимое значение
  3. Запустите $(«form»).validate().element(«#field»). Поскольку обход «да», он проходит.
  4. Установите для toggleBypass значение «нет»
  5. Запустите $(«form»).validate().element(«#field»). Она проходит, поскольку удаленный сервер не отправил повторную отправку.

Есть идеи, как я могу заставить его работать должным образом?

Ответ №1:

Если вы посмотрите на строку 897 в jquery.validate.js вы увидите оптимизацию:

if ( previous.old !== value ) {

Эта строка предотвращает новую проверку, если значение поля не изменилось. И поскольку вы используете validate().element() , он проверяет только это поле, а не всю форму, поэтому он не обнаруживает изменения в toggleBypass.

Либо удалите эту проверку из источника jquery.validate, либо проверьте всю форму, а не только это поле.

Комментарии:

1. Спасибо за вашу помощь. Я попробую это завтра, когда вернусь к работе.