Подтвердить что ты не робот

Отправьте HTML5-форму с помощью Javascript и подтвердите свои входы

Я пишу форму и добавляю атрибуты проверки html5 к ее вводу, например, "требуется", "автофокусировка". Я использую Javascript для отправки формы с помощью document.myForm.submit(), но не проверяет форму против атрибутов проверки html5, поскольку их нет.

Любые предложения?

4b9b3361

Ответ 1

Похоже, что запуск кнопки click на кнопке отправки имеет правильный эффект: http://jsfiddle.net/e6Hf7/.

document.myForm.submitButton.click();

и если у вас нет кнопки отправки, добавьте невидимое, например:

<input type="submit" style="display:none" name="submitButton">

Ответ 2

Ответ pimvdb основан на обходном пути для включения скрытой кнопки отправки.

HTML5 предоставляет функции javascript для достижения одного и того же без кнопки отправки. Как отметил Тигрин, Mozilla документирует два метода проверки достоверности для элементов формы:

  • checkValidity() возвращает true/false и ничего не сообщает конечному пользователю
  • reportValidity() возвращает true/false и ALSO отображает сообщения о проверке для конечного пользователя (например, обычный щелчок кнопки отправки)

<!DOCTYPE html>
<html>
<body>

<form name="testform" action="action_page.php">
E-mail: <input type="email" name="email" required><br/>
<a href="#" onclick="javascript:console.log(document.testform.reportValidity());return false;">Report validity</a><br/>
<a href="#" onclick="javascript:console.log(document.testform.checkValidity());return false;">Check validity</a><br/>
<a href="#" onclick="javascript:if(document.testform.reportValidity()){document.testform.submit();}return false;">Submit</a>
</form>

</body>
</html>

Ответ 3

Почему бы просто не просто выполнить проверку вручную до того, как вы выполните document.myForm.submit()

Какую структуру проверки вы используете и какую библиотеку AJAX?

Если вы используете jQuery, здесь приведен код, чтобы предотвратить отправку:

$('#myForm').submit(function(evt) {
  if (! $('#myForm').validate()) {
    evt.preventDefault();
  }
});

И запустите отправку через:

$('#myForm').submit();

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

Если вы не используете какие-либо рамки JavaScript, вы можете посмотреть: element.checkValidity(); и как вызывать проверку HTML5 из ​​JavaScript, прежде чем даже вызвать submit.