2011-11-24 111 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;