Как проверить, завершена ли проверка формы HTML5 - PullRequest
13 голосов
/ 24 ноября 2011

У меня есть форма, использующая html5 для проверки электронной почты и обязательных полей.Форма должна быть отправлена ​​через ajax.Как определить, что форма прошла проверку перед тем, как разрешить отправлять форму через ajax.

Это мой HTML:

<form action="" method="post" id="comment_form">
  <input type="hidden" name="post_id" value="<?=$post->ID ?>" />
  <label for="name">Name</label>
  <input type="text" name="name" required="required">

  <label for="email">Email Address</label>
  <input type="email" name="email" required="required">


  <label for="comment">Comment</label>
  <textarea name="comment" required="required" >
  </textarea>


  <label for="submit"></label>
  <button type="submit"class="button green meduim" id="comment_btn">Submit</button>
</form>

Это мой jquery

$("#comment_btn").click(function(e){
  //the request url
  var url = site_url+'comments/post_comment';
  //cross site request forgery token
  var xtoken = $("input[name='xtoken']").val();
  //post data
  var dataObj = {
    "name":$('#name').val(),
    "email":$("#email").val(),
    "comment":$("#comment").val(),
    "post_id":$("input[name='post_id']").val(),
    "xtoken":xtoken
  };
  //dim form
  $('#comment_form').addClass('dim');
  //make request
  $.ajax({
    url:url,
    type:'POST',
    data:dataObj,
    dataType:'json',
    error:function() {},
    success:function(resp) {
      if(resp.status == "ok")
      {
        $('#comment_form').removeClass('dim');
      }else {
        alert("An error was encountered");
      }
    }
  });
  e.preventDefault();
});

Есть ли способ определить, проверена ли форма?

Ответы [ 4 ]

40 голосов
/ 25 ноября 2011

Не привязывайте к событию нажатия кнопки отправки, просто привязывайте к событию отправки вашей формы:

$('#comment_form').submit(function(e){
    e.preventDefault();
    //submit via ajax
});
7 голосов
/ 24 ноября 2011

Вы можете использовать функцию валидатора form () , например,

var validator = $("#comment_form").validate(options);
if (validator.form()) {
    // submit with AJAX
}
1 голос
/ 24 ноября 2011

Вероятно, лучше не полагаться на браузер для проверки ваших данных, конечно, используйте обязательный и шаблон круто, и все, но я бы от этого не зависел.

Запишите свою собственную проверку в ваш javascript перед отправкой данных на ваш URL.Вы можете сделать это с небольшим количеством Regex или использовать многие из доступных плагинов проверки jQuery, таких как h5validate или Validation .

0 голосов
/ 26 июня 2013

Вы можете зарегистрироваться в стандартной форме onsubmit, которая будет запущена, если форма успешно прошла проверку и отправляется.

document.getElementById("comment_form").onsubmit = myPassedValidationHandler;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...