2013-12-13 75 views
1

這個表單驗證函數是否正確?或者它可以做得更好?
例如:我希望兩個下拉列表中的一個在檢查聯繫人詳細信息字段(dp1或dp2)之前有一個值,但即使使用(||)驗證的行爲爲& &。用多個if語句的javascript表單驗證

$('#send').click(function(){ 

if(document.downloadForm.SoftwareDp.value == "0" || document.downloadForm.ManualDp.value == "0") 
{ 
alert("Please Select a file for Download"); 
return false; } 

// First check if Dropdown 1 OR dropdown 2 have been selected (ONE at least) 


if(document.downloadForm.name.value == "" && document.downloadForm.email.value == "") 
{ 
alert("Please enter your details"); 
return false; } 

// then check if name and email are typed in. 

else{ // run some ajax if above conditions are met } }); 

演示:http://jsbin.com/UGotAFIL/1/edit?html,js,output 感謝

+0

爲什麼你在第一個比較值爲0? –

+0

你可以使用jQuery驗證插件進行表單驗證。它會更容易使用。 http://jqueryvalidation.org/validate/ –

+0

第一個默認選項等...然後其他選項有價值... – Awena

回答

3

你的條件很好的工作。 如果你想檢查兩個下拉沒有被選中,你應該使用&&而不是||

如果您需要選擇至少一個下拉意味着你可以你可以使用

$('#send').click(function(){ 

if(!(document.downloadForm.SoftwareDp.value != "0" || document.downloadForm.ManualDp.value != "0")) 
{ 
alert("Please Select a file for Download"); 
return false; } 

// First check if Dropdown 1 OR dropdown 2 have been selected (ONE at least) 


if(document.downloadForm.name.value === "" && document.downloadForm.email.value === "") 
{ 
alert("Please enter your details"); 
return false; } 

// then check if name and email are typed in. 

else{ // run some ajax if above conditions are met 
} }); 

看到這個jsbin demo

0

如果我理解正確的話,你要顯示的錯誤時,沒有下拉菜單有一個值,既沒有任何價值。 變化

if(document.downloadForm.SoftwareDp.value == "0" || document.downloadForm.ManualDp.value == "0") 

要麼

if(document.downloadForm.SoftwareDp.value == "0" && document.downloadForm.ManualDp.value == "0") // both have the default value 0 

if(!(document.downloadForm.SoftwareDp.value != "0" || document.downloadForm.ManualDp.value != "0")) // none of them has not the default value 
0

你現在的樣子檢查總會給警告,除非你比0選擇其他在兩個值。

你應該做的是這樣的:

if(document.downloadForm.SoftwareDp.value == "0" && document.downloadForm.ManualDp.value == "0") 

只有當兩者都選擇了0。如果其中一人有其它的值也不會顯示警告以上將給予警告。