2011-11-24 119 views
12

我有一个表单使用html5验证电子邮件和必填字段。 表单将通过ajax提交。 我如何确定表单通过验证之前,我允许表单通过ajax提交。如何检查html5表单验证是否完成

这是我的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(); 
}); 

有没有办法来确定表单验证?

+0

你可以说'required'而不是'required =“required”'。 –

回答

6

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

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

这也可能是最好不要依赖浏览器来验证你的数据,一定要使用requiredpattern是很酷,但我不会依赖于它。

在将数据发送到您的URL之前,将您自己的验证写入JavaScript。你可以用Regex做一些这方面的工作,或者你可以使用很多可用的jQuery验证插件,例如h5validateValidation

34

不绑定到提交按钮的单击事件只是绑定到你的表单的提交事件:

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

简短,简洁,点=优雅。当然这是最好的答案。 – PALEN

+1

这应该被接受的答案。 –

0

可以以标准形式注册“的onsubmit”,这将被解雇的事件,如果窗体有已成功通过验证并正在提交。

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