2010-10-18 77 views
1

我有一个复选框列表,我想确保用户在提交表单前至少检查一个复选框。我怎样才能做到这一点?复选框验证器

有3个类别,然后每个类别10个项目与复选框。

我想在javascript中这样做,其中我将有一个隐藏变量,然后当用户检查任何复选框时,隐藏变量将有1作为它的值,然后如果用户将取消选中该框,隐藏变量将具有0作为其值。

回答

4

你是如何标记它们的?

我希望像这样...

<input type="checkbox" name="something[]" value="55" /> 
PHP

则...

if (! isset($_POST['something']) OR empty($_POST['something'])) { 
    echo 'Select a checkbox, please!'; 
} 

您还可以检查与的JavaScript ...

var inputs = document.getElementById('my-form').getElementsByTagName('input'); 
var checked = 0; 
for (var i = 0, length = inputs.length; i < length; i++) { 
    if (inputs[i].getAttribute('type') !== 'checkbox') { 
     continue; 
    } 

    if (inputs[i].checked) { 
     checked++; 
    } 
} 

if (checked === 0) { 
    alert('Select a checkbox, please!'); 
} 

See it working on JSbin

+0

我该如何在javascript中做到这一点? – anonymous2 2010-10-18 01:49:49

+1

@ anonymous2查看我的编辑:) – alex 2010-10-18 01:57:38

+0

+1这就是答案。但是,只是好奇,为什么混合了客户端和服务器端技术?我做一切服务器端,因为,用户可以关闭JS,你必须处理(如何?)。而且,根据我的经验,不可避免地会有人编辑页面源代码,稍微改变JS,“只是为了看看会发生什么”。无论哪种情况,您都需要长时间的维护,所以我建议仅使用服务器端(ymmv) – Mawg 2010-10-18 02:03:02