我想验证一个复选框。 实际上是多个具有同名的:
<input type="checkbox" name="somefield" value="1">1
<input type="checkbox" name="somefield" value="2">2
<input type="checkbox" name="somefield" value="3">3
我想确保在提交表单之前至少检查一个框。
所以我添加了一个验证器:
Form.Validator.add('isChecked', {
errorMsg: 'One of these fields is required',
test: function(element){
if (element.type == 'checkbox' || element.checked==true) return false;
else return true;
}
});
但是这需要检查所有字段......
在最少的情况下,我想弹出相同的Form.Validator.Tips错误消息(无法弄清楚如何触发)...
那么我该怎么做呢?
答案 0 :(得分:2)
显然有一个验证器:
验证要求的检查
卫生署!
答案 1 :(得分:2)
已经提供了一个更合适的验证器,您可以在此处看到:
https://github.com/mootools/mootools-more/blob/master/Source/Forms/Form.Validator.js#L503-512
['validate-one-required', {
errorMsg: Form.Validator.getMsg.pass('oneRequired'),
test: function(element, props){
var p = document.id(props['validate-one-required']) || element.getParent(props['validate-one-required']);
return p.getElements('input').some(function(el){
if (['checkbox', 'radio'].contains(el.get('type'))) return el.get('checked');
return el.get('value');
});
}
}]
答案 2 :(得分:0)
我会想象:
function test(element){
var anyChecked = false;
$$('input[type=checkbox]').each(function (el) {
if(el.checked){
anyChecked = true;
}
return anyChecked;
}
可能是一种更有效的方式。
答案 3 :(得分:0)
使用validate-reqchk-byname
http://mootools.net/docs/more/Forms/Form.Validator.Extras#Validators:validate-reqchk-byname