2012-02-21 213 views
2

我不能簡單地讓我的頭繞過javascript驗證。我看過教程,它只是不適合我。有人請給我一個簡單的一步一步的指導,我可以如何添加驗證複選框。所以說這是我的形式:複選框驗證

<form name="form1" method = "post"> 

<input name="Conservatives" type="checkbox" value="Conservatives" /> Conservative 

<input name="Liberal Democrats" type="checkbox" value="Liberal Democrats" /> Liberal Democrats 

<input name="Labour" type="checkbox" value="Labour" /> Labour 


</form> 

我希望用戶至少選擇2個複選框。驗證應該從事情的客戶端完成,然後我會使用php將值發送到數據庫? 任何幫助傢伙?

回答

0

所以你想驗證,根據你的評論,這些複選框中至少有兩個被選中?我會給他們所有的同名:

<input name="partyAffiliation" type="checkbox" value="Conservatives" /> Conservative 
<input name="partyAffiliation" type="checkbox" value="Liberal Democrats" /> Liberal Democrats 
<input name="partyAffiliation" type="checkbox" value="Labour" /> Labour 

然後循環它們,看看有多少被檢查。 document.getElementsByName會給你複選框,每個複選框將有一個checked屬性。

var allCbs = document.getElementsByName("partyAffiliation"); 
var numChecked = 0; 
for(var i = 0, max = allCbs.length; i < max; i++) 
    if (allCbs[i].checked) 
     numChecked++; 

if (numChecked < 2) 
    alert("Select at least two parties!"); 

我不知道你的項目的細節,但我只提到jQuery將讓上面的代碼很簡單,如果使用這個庫的東西你不反對:

var numChecked = $("input[name='partyAffiliation']:checked").length; 

if (numChecked < 2) 
    alert("Select at least two parties!"); 

EDIT

響應於共請注意,不要擔心具有相同名稱的多個輸入。您的服務器端代碼應該會收到與該名稱關聯的所有(選定)值的以逗號分隔的列表。所以,如果你檢查所有三個複選框,你會看到類似下面的東西。

enter image description here

+0

如何區分服務器端的複選框,如果它們具有相同的名稱? – 2012-02-21 23:28:53

+0

我希望用戶至少選擇2個複選框。驗證應該從事情的客戶端完成,然後我會使用php將值發送到數據庫? – 2012-02-21 23:30:00

+0

@MohemaBurhan - 好吧,那麼不是一個anyChecked,你會保持總共有多少被檢查,並與兩個比較。 – 2012-02-21 23:30:59

0

看起來你真正想要的單選按鈕,複選框沒有。

如果是這樣的情況下,使用此:

<form action="" method="post"> 
    <label><input type="radio" name="vote" value="Conserv" /> Conservative</label><br /> 
    <label><input type="radio" name="vote" value="LibDem" /> Liberal Democrats</label><br /> 
    <label><input type="radio" name="vote" value="Labour" /> Labour</label><br /> 
</form> 

然後,在任何服務器端代碼你擁有的vote POST變量要麼取決於用戶的選擇"Conserv""LibDem""Labour"

+0

我希望用戶至少選擇2個複選框。驗證應該從事情的客戶端完成,然後我會使用php將值發送到數據庫? – 2012-02-21 23:30:37