复选框验证

时间:2012-02-21 23:22:55

标签: javascript validation

我不能简单地了解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将值发送到数据库? 任何帮助人?

2 个答案:

答案 0 :(得分: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!");

修改

在回复下面的评论时,不要担心具有相同名称的多个输入。您的服务器端代码应该接收以逗号分隔的列表,其中包含与该名称关联的所有(选定)值。因此,如果您选中所有三个复选框,则会看到类似下面的内容。

enter image description here

答案 1 :(得分: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",具体取决于用户的选择。