今天,碰到一个问题,如果easyUI的下拉框要多选怎么处理,如果只想要几个内容不选而其他的都选中又改怎么处理。首先先看easyUI中是怎么将下拉框处理成多选的。
$("#fzjg").combobox({
url :"common_getProvinceList.action",
valueField :"BZDM",
textField : "MC",
multiple:true,
panelHeight:'200',
panelWidth:'300',
});//这一段在js中执行
其中 fzjg 就是 id为 "fzjg"的文本框,属性multiple:true,表示可以进行多选操作。地址url是从后台返回来的数据,其中mc表示显示名称,bzdm表示实际值。
<input class="easyui-combobox" id="fzjg" style="width:175px;" >
实际显示如下:

接下来是实现全选操作,这里实现全选操作有两个思路,一是在后台中添加"全选"传到前台,另一个方法是直接在js里面处理,不过要先获取后台传过来的值,将他们拼接在一起,在调用组合成下拉框的方法,其中关于easyUI的下拉框一些内容可以看这个地址,
$.ajax({
type :"post",
async :false,
url :"common_getProvinceList.action",
data :{t:Math.random()},
dataType :"json",
success :function(datas){
//data.push({"BZDM":"","MC":"全选"});
//将下拉框的值存到数组里 后面要用
var array =new Array();
for(var i = 0; i < datas.length; i++ ){
array[i] = datas[i].BZDM;
}
//console.log(array);
datas.unshift({"BZDM":"","MC":"全选"});
$("#fzjg").combobox({
data:datas,
valueField :"BZDM",
textField : "MC",
multiple:true,
panelHeight:'200',
panelWidth:'300',
onSelect:function(obj){
//obj为:Object {MC: "河北", BZDM: "冀"}
if(obj.MC == "全选"){
//console.log("全选");
$("#fzjg").combobox("unselect","");//因为我全选给的值为空
$("#fzjg").combobox("setValues",array);//全选操作
}
}
});
//console.log(datas);
},
error:function(){
alert("调用失败,请联系管理员");
}
})
先调用Ajax获取下拉框列表的数据,数据如下:

这里我们可以知道这是一个array数组,再将"全选"添加进去,用unshift添加到首行,

再调用easyUI方法combobox组合成下拉框,data表示下拉框的数据(数组的形式),onSelect这个事件是指下拉框选中时执行的方法,这里如果是选择全选,那么就将全选不选中,而且将其他的项都选中,这里用unselect方法表示取消选中实际值为""的那一项,在前面我们给全选那一项的实际值为空,所以可以使"全选"这一项不选中,将其他项都选中要使用setValues方法,参数是数组,在上面的js代码有给,这里setValues 表示赋值多个,如果用setValue就表示赋值一个,同样的getValue和getValues也是如此。

9795



被折叠的 条评论
为什么被折叠?



