一、问题
dwz的lookup中的全选功能,第一个点击全选,正确无误。第二次点击全选,所有选中的CheckBox取消,也正确无误。第三次点击的时候,CheckBox应该是全部选中,然而,一个选中的都没有。如图:
二、过程
1、在网上找了很多,只有一个和我的问题一样。看了一下,我们的问题一样,但是,出错的地方不同。这个同志出错的地方是,dwz.frag.xml文件中与lookup函数class名不同,具体请看:http://blog.csdn.net/silence1214/article/details/9101421
2、看到网友的问题及解决方法,我由dwz.database.js文件推到dwz.checkbox.js文件。发现这个文件的中select函数是症状所在,select原函数:
select: function(_name, _type, _parent){
$parent = $(_parent || document);
$checkboxLi = $parent.find(":checkbox[name='"+_name+"']");
switch(_type){
case "invert":
$checkboxLi.each(function(){
$checkbox = $(this);
$checkbox.attr('checked', !$checkbox.is(":checked"));
});
break;
case "none":
$checkboxLi.attr('checked', false);
break;
default:
$checkboxLi.attr('checked', true);
break;
}
}
三、解决方法
改select函数,dwz源文件中最新的dwz.checkbox.js文件,已经改好。解决问题的select函数是:
select: function(_name, _type, _parent){
$parent = $(_parent || document);
$checkboxLi = $parent.find(":checkbox[name='"+_name+"']");
switch(_type){
case "invert":
$checkboxLi.each(function(){
$checkbox = $(this);
$checkbox.attr('checked', !$checkbox.is(":checked"));
});
break;
case "none":
$checkboxLi.removeAttr('checked');
break;
default:
$checkboxLi.each(function(){
this.checked = true;
});
break;
}
}