繁体   English   中英

如何检查html5表单验证是否完成

[英]How check if html5 form validation is complete

我有一个表单,它使用 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();
});

有没有办法确定表单是否经过验证?

不要绑定到提交按钮的点击事件,只需绑定到表单的提交事件:

$('#comment_form').submit(function(e){
    e.preventDefault();
    //submit via ajax
});

您可以使用验证器的form()函数,例如

var validator = $("#comment_form").validate(options);
if (validator.form()) {
    // submit with AJAX
}

最好不要依赖浏览器来验证您的数据,确保使用requiredpattern很酷,但我不会依赖它。

在将数据发送到您的 URL 之前,将您自己的验证写入您的 javascript。 您可以使用一些Regex来完成此操作,也可以使用许多可用的 jQuery 验证插件,例如h5validateValidation

您可以注册标准表单“onsubmit”事件,如果表单成功通过验证并正在提交,则该事件将被触发。

document.getElementById("comment_form").onsubmit = myPassedValidationHandler;

我使用和为我工作更好方式是这样的:

查询

$(document).on('submit', '#address-form', function(event){
    event.preventDefault();

    // submit via Ajax
});

这种方式是为了防止通过ajax提交和发送表单,问候!

已经很长时间了,但这是我对这种情况的处理方法。 特别是当我更喜欢使用带有原生 HTML 验证的 AJAX 时。

document.getElementById("myBtn").addEventListener("click", checkIfValid);
const checkIfValid = {} => {
  if(document.getElementById('myForm').checkValidity()) {
      event.preventDefault();
      // Do some AJAX stuff;
    }
}

PS:如果event.preventDefault()if子句之外if ,它不会起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM