2014-02-19 403 views
0

我有一個帶有下拉的表單被驗證,驗證工作正常,但如果用戶選擇除默認以外的任何選項,表單將不會提交。當JavaScript驗證時表單不提交

我以更易讀的格式創建了當前代碼的jsfiddle

爲什麼我的表單不提交?

的JavaScript任何後return

$('#btncheck').click(function() { 
    if ($("#mySelect ")[0].selectedIndex <= 0) { 
     alert("Please select a tank from the menu!"); 
     return false; 
    } else { 
     return true; 
     form.submit(); 
    } 
}); 
+1

的Java指南!= JavaScript的 – Jonathan

回答

1

這是因爲你有上述form.submit();你需要切換的這些順序的return true聲明。

$('#btncheck').click(function(){ 
    if ($("#mySelect")[0].selectedIndex <= 0) { 
     alert("Please select a tank from the menu!"); 
     return false; 
    } 
    form.submit(); 
    return true; 
}); 

(我也清理了你的一些代碼。)


我已經編輯您的jsfiddle,並拿出一個工作示例。 http://jsfiddle.net/36JZL/44/當彈出警告框時,您可以看到提交表單的代碼部分正在到達。


要回答你最近的評論,我已經更新了JSFiddle。 http://jsfiddle.net/36JZL/46/。這會更改下拉列表的背景顏色並在其下方顯示錯誤消息。

+0

我這樣做,但形式仍然不會提交?沒有錯誤或什麼都沒有發生 –

+1

好的,看看我修改後的帖子。我將你鏈接到一個新的JSFiddle。請注意,我爲表單提供了一個ID,以便於提交。 – ktm5124

+0

現在工作正常,我得到了窗體上的ID;) –

4

不會火:

return true; 
form.submit(); 
0
$(document).ready(function() { 
$('#btncheck').click(function(){ 
    if ($("#mySelect ")[0].selectedIndex <= 0) { 
     alert("Please select a tank from the menu!"); 
       return false; 
       } 
    else { 
     //return true; 
     $('form').submit(); 
    } 
}); 
}); 

p.s.在表單中添加動作標籤(例如action ='server-side.php'),否則表單將被提交/處理到/在同一頁面上(可能你想要它,不知道)和方法(我猜你不' t要缺省 - GET)