最近項目需要用dojo,有個應用是有多個checkbox。選中一個一級目錄的checkbox,二級所有會選中。
我用以前常用的js全選,(document.getElementById('chkname').checked=true;)發現沒用反應。
後來通過F12查看html,才發現問題。其實已經選中了,只是dojo的checkbox藍色選中樣式沒加上去,就是說只能用dojo方式設定checkbox的選擇狀態。
發現在dojo下,input類型為checkbox的控制項無法通過dojo方式綁定click,onchange事件。
<input type="checkbox" data-dojo-type="dijit/form/CheckBox" id="w01" name="w01" onchange="btnClick('w01',2)" value="w01"> <label for="w01">w01 input/checkbox dijit/form/CheckBox</label> <input type="checkbox" data-dojo-type="dijit/form/CheckBox" id="w01_0" value="1"> <input type="checkbox" data-dojo-type="dijit/form/CheckBox" id="w01_1" value="2"> <input type="checkbox" data-dojo-type="dijit/form/CheckBox" id="w02" name="w02" onchange="btnClick('w02',3)" value="w01"> <label for="w01">w01 input/checkbox dijit/form/CheckBox</label> <input type="checkbox" data-dojo-type="dijit/form/CheckBox" id="w02_0" value="1"> <input type="checkbox" data-dojo-type="dijit/form/CheckBox" id="w02_1" value="2"> <input type="checkbox" data-dojo-type="dijit/form/CheckBox" id="w02_1" value="3"> </br> <input type="button" value='show' onclick="showlist('w01',2)"/> <label for="w01">sub</label><script type="text/javascript"> function btnClick(a,size) { for(i=0;i<size;i++) dijit.byId(a+'_'+i).attr('checked',dijit.byId(a).checked); } function showlist(a,size){ s=''; for(i=0;i<size;i++){ if(dijit.byId(a+'_'+i).checked){ s+=dijit.byId(a+'_'+i).value+','; } } alert(s) } </script>