最近项目需要用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>
<select id="typeClass_modify" name="typeClass" data-dojo-type="dijit/form/Select">
<option value="-1" selected="selected">请选择</option>
<option value="3">3-上层菜单</option>
<option value="4">4-左侧菜单</option>
<option value="5">5-页面菜单</option>
</select>
setTimeout(function() { var widget = dijit.byId("typeClass_modify"); if(widget){ widget.attr('value','${s.getTypeClass()}'); }else{ console.log('lowBalanceCheck null') } },1000);