2015-02-11 195 views
0

我有一個jQuery驗證的表單。如果我點擊提交按鈕,它會觸發jQuery驗證,如果沒有錯誤,我希望它繼續正常提交procudure。(運行表單action =「process.php」...)。但是當我點擊提交按鈕並沒有錯誤時,它什麼都不做。jQuery驗證後提交表單

這裏是我的簡單的HTML表單:

<form action="process.php" method="post"> 
    <input type="text" id="name"/> 
    <input type ="submit" id="ok" name="ok" /> 
    <div class='error_message'></div> 
</form> 

這裏是我的jQuery代碼:

$(document).ready(function(){ 
    $('#name').focus(); 
    $('#ok').click(function(){ 
     var name = $('#name'); 
     var error_message = $('.error_message'); 
     if (name.val() == '') { 
      name.focus(); 
      error_message.html('Name is required!'); 
      return false; 
     } 
     else { 
      return false; 
     } 
    }); 
}); 
+0

考慮使用jQuery驗證和Ajax的形式提交插件一起。 – astroanu 2015-02-11 08:17:52

+0

我的表單也有輸入=文件和Ajax不會爲這種情況下工作不是嗎? – 2015-02-11 08:21:36

+0

它的工作原理。您需要使用多部分表單數據標題進行POST請求:) – astroanu 2015-02-11 08:26:21

回答

2

兩個條件導致提交按鈕結果在事件單擊處理程序停止。刪除else塊:

$('#ok').click(function(){ 
    var name = $('#name'); 
    var error_message = $('.error_message'); 
    if (name.val() == '') { 
     title.focus(); 
     error_message.html('Name is required!'); 
     return false; 
    } 
}); 

或者更好的是,掛鉤到submit事件的形式爲:

$('form').submit(function(e) { 
    var error_message = $('.error_message'); 
    if ($('#name').val() == '') { 
     title.focus(); 
     error_message.html('Name is required!'); 
     e.preventDefault(); // stop form submission 
    } 
}); 

此外,titleerror_message不會出現在你的代碼中定義。我假設他們被宣佈在範圍內的其他地方。

+0

$('form')。submit(function(e)'。'表單'是表單的名稱或表單的ID? – 2015-02-11 08:27:29

+0

表單相關到表單元素 – 2015-02-11 08:31:52

+0

我試圖掛鉤表單的提交事件,但當我填寫名稱,然後單擊提交。它不會繼續進行表單提交,不知何故它重新集中在名稱字段? – 2015-02-11 08:35:07

1

使用提交function

$(document).ready(function(){ 
$('#name').focus(); 
$('form').submit(function(e){ 
    var name = $('#name'); 
    var error_message = $('.error_message'); 
    if (name.val() == '') { 
     title.focus(); 
     error_message.html('Name is required!'); 
     e.preventDefault(); // stop submitting the form 
    } 
});});