2011-12-26 162 views
7

我有以下形式:驗證的jQuery後提交表單

<form id="form" action="comments.php" method="post"> 
    <ul> 
    <li><div class="formbox_titles">Name</div><input type="text" name="name" class="required comm_input" /></li> 
    <li><div class="formbox_titles">Email</div><input type="text" name="email" class="required comm_input"/></li> 
    <li><div class="formbox_titles">Message</div><textarea name="message" class="required comm_text"></textarea></li> 
    <li><input type="submit" value="Submit"></li> 
    </ul> 
</form> 

及以下JQuery的表單提交:

target: '#preview', 
    success: function() { 
    $('#formbox').slideUp('fast'); 
} 

現在的問題是,我也有表單驗證的jQuery代碼

$().ready(function() { 
    // validate comment form 
    $("#form").validate({ 
    }); 
}); 

他們都工作得很好,窗體彈出警告,所有三個字段不能爲空,但形式內的日期無論如何都被提交到數據庫中。我使用下面的代碼進行表單驗證http://bassistance.de/jquery-plugins/jquery-plugin-validation/所以問題是如何添加第一個jquery第二,所以首先將被執行一旦所需的字段被填充?

希望有人會幫助。謝謝。

回答

3

我不知道您的驗證插件什麼,但通常ü可以使用的代碼

<script> 

    $("form").submit(function() { 
     if (validationIsTrue()) { 
     return true; 
     } 
     else { 
     return false; 
     } 
    }); 
</script> 

你必須讓你驗證,然後返回true/false,以表單的提交功能這一和平。如果插件不返回一個布爾值,你可以嘗試這樣的事:

$("form").submit(function() { 
    return $(this).validate({ .... }); 
}); 
8

從你的榜樣,我並不清楚你的頁面的控制流,但是,我假設你所呼叫的submit()方法某處。驗證完表單並提交之前,請使用valid()方法檢查驗證。你的代碼應該是這個樣子:

$("#form").validate(); 
if ($('#form').valid()) 
    $('#form').submit(); 
2

當你說「日期內提交表單」這是沒有意義的,因爲我在你的代碼段,我什麼也看不到所謂的「約會」。

我用.validate()廣泛插件... 我可以告訴你,可以幫助是,驗證您正在使用插件具有您可以使用submitHandler功能...

// validate comment form 
$("#form").validate({ 
submitHandler : function(form) { 
    //do something here 
    form.submit(); 
} 
}); 

僅當符合所有驗證規則時纔會調用submitHandler。即在你的情況下,你有三個「必需」字段,這意味着除非所有三個字段都有值,否則不會提交此表單。因此,我可以肯定地告訴你,用提供的信息沒有任何東西可以表明你描述的問題。提供更多更好的信息將幫助我們找出問題所在。

9

如果您想手動提交表單,則必須繞過jQuery綁定事件。您可以通過以下兩種方式做到這一點:

$('#form_id')[0].submit(); 

$('#form_id').get(0).submit(); 

[0]或得到(0)爲您提供了DOM對象而不是jQuery對象。

+1

感謝您指出......正在尋找這個,因爲我有一個事件綁定提交表單,但在我實際發送表單之前,我必須做一個AJAX請求,如果條件爲真,我提交表單並在那裏我需要繞過。 +1 – 2016-01-27 09:16:49