Mootools Form.Validator复选框

时间:2011-12-16 08:33:07

标签: javascript mootools

我想验证一个复选框。 实际上是多个具有同名的:

<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错误消息(无法弄清楚如何触发)...

那么我该怎么做呢?

4 个答案:

答案 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)