HTMLFormElement.reportValidity () игнорировать поля ввода «display: none» - PullRequest
0 голосов
/ 11 октября 2019

Я отправляю форму, используя вызов ajax. Когда пользователь использует кнопку отправки в форме, это вызывает функцию sendForm(). Функция предотвращает использование по умолчанию (отправка формы) и проверяет форму (для полей с required), и если форма действительна, тогда выполняется вызов ajax.

Проблема в том, что форма содержит некоторые скрытые (display:none) элементы, которые проверяются с помощью вызова resportValidity(), и поэтому форма завершается ошибкой из-за скрытых элементов, которые не должны проверяться (ониотображается в зависимости от параметров предыдущего пользователя).

Ниже используемой функции sendForm():

function sendForm(e) {
  $(e).preventDefault;

  var form = document.getElementById('myForm');

  if (form.reportValidity()) { 

      // form is valid, do ajax call..

  }else{

    alert("Form not valid");

  }
}

Так что, когда это происходит form.reportValidity(), я получаю false из-за "пустого" requiredполя ввода из входов со стилем display:none.

Как я могу просто сообщить Valid () элементы формы без display:none? Спасибо!

1 Ответ

2 голосов
/ 11 октября 2019

Если вы не хотите, чтобы элемент был включен в форму при проверке на достоверность, вы должны disable элемент. В то время, когда вы устанавливаете display: none, вы также должны добавить атрибут disabled.

Документация

...