2011-12-16 51 views
0

我想驗證一個複選框。 其實多者有一個相同的名字:Mootools Form.Validator複選框

<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

我猜想是這樣的:

function test(element){ 
    var anyChecked = false; 
    $$('input[type=checkbox]').each(function (el) { 
     if(el.checked){ 
      anyChecked = true; 
     } 
    return anyChecked; 
} 

可能這樣做的更有效的方法。

+0

不,檢查有效性是好的,我沒有那樣描述你的描述。 – R0b0tn1k 2011-12-16 09:28:43

2

顯然有一個驗證爲:

驗證要求的檢查

衛生署!

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'); 
     }); 
    } 
}]