2013-07-18 74 views
2

我試圖爲多個複選框實現切換,但是如果我手動切換一個複選框,切換不再考慮複選框。切換多個複選框 - 原型js

var publishAll = $("toggle"); 
 
publishAll.observe('click', function(e){ 
 
\t var state = null; 
 
\t if(this.checked) { 
 
\t \t state = "checked"; 
 
\t } 
 
\t $$('.checkbox').invoke('writeAttribute', 'checked', state); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js"></script> 
 
<input id="toggle" type="checkbox" name="toggle" value="true"> Toggle checkbox<br /><br /> 
 
    
 
check these manually and it won't work with toggle anymore.<br /> 
 
<input class="checkbox" type="checkbox" name="checkbox[]" value="1"><br /> 
 
<input class="checkbox" type="checkbox" name="checkbox[]" value="2">

難道我做錯了什麼?

+0

我很困惑:\代碼對我來說看起來很好,當我用手切換他們時,我看不到任何檢查員的變化... –

+0

我也很困惑。我真的不知道如何在語義上解決這個問題! – rayphi

回答

2

,而不是試圖設置的檢查,以「選中」屬性,你需要使用JavaScript truefalse以及使用setValue()方法

所以您可以簡化您的JavaScript這樣

$("toggle").observe('click', function(e){ 
    $$('.checkbox').invoke('setValue',this.checked); 
});