2010-06-07 39 views
0

使用原型,是否有一個簡單的方法來檢查一組值是否匹配,例如 - 可以將這些代碼細化爲單行還是更優雅?檢查使用原型的所有值匹配

var val = null; 
var fail = false; 

$('form').select('.class').each(function(e){ 
    if(!val){ 
     val = $F(e); 
    }else{ 
     if(val != $F(e)) fail = true; 
    } 
}); 

回答

3

呵呵,這個oneliner應該這樣做:

$(form).select('.'+className).invoke('getValue').uniq().size()===1; // true means all values are the same

  • 製造陣列出與類名你是之後(輸入/等)元素的值(運行invoke
  • 使數組僅包含唯一值(在陣列上調用uniq
  • 查看是否其長度爲1個

鏈接原型文檔:Element.selectEnumerable#invokeForm.Element.getValueArray#uniq

實施例:

<body> 

<form action="#" id="myform"> 
    <input type="text" name="foo1" class="foo" /> 
    <input type="text" name="foo2" class="foo" /> 
    <input type="text" name="foo3" class="foo" /> 
    <input type="text" name="foo4" class="foo" /> 
    <input type="text" name="foo5" class="foo" /> 
    <input type="submit" /> 
</form> 

<script type="text/javascript"> 
// Returns true if all values of elements with a certain classname in the form has the same value 
function bar(form, className) { 
    return $(form).select('.'+className).invoke('getValue').uniq().size()===1; 
} 
// Usage: bar('myform', 'foo'); 
</script> 
</body> 
相關問題