2012-02-21 127 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