easyui (combobox或者combogrid)下拉框在点击其他地方时候会回缩,期望效果为下拉框一直处于展开状态

需求:点击左侧的用户,右侧能够显示点击的用户,达到类似QQ群添加群成员的效果
思路设计:依靠easyui自带的Combogrid实现,combogrid有onSelect方法,能够在选中下拉框选项时候触发动作,这时候配合

  $("#xxx").combogrid("setValue", item); //需重新赋值(这个地方需要再重新赋值一次)
  var gridData = $('#BaseCustomerIdsCom').combogrid('grid'); // 获取数据表格对象
  var rowData = gridData.datagrid('getSelected'); // 获取选择的行


能够获取到当前行的数据,把数据在赋值到右侧便可,右侧部分省略

遇到难点:

下拉框想让他一直处于下拉状态,有人会问为啥不用datagrid组件做,因为combogrid自带搜索功能,使用这个功能用combogrid会好用一些,唯一要解决的问题就是不让下拉框在点击其他地方时候回收。
最开始的想法是,捕获全局的点击事件,在里面加入$('#xxx').combobox('showPanel');
实际不理想,因为在点击其他地方的时候依旧会收一下,再显示,效果不好看
//捕获全局点击事件
$(document).on('click', function (e) {
$('#BaseCustomerIdsCom').combobox('showPanel');
});
后面找了很久,一直找不到合适的解决办法,查看官方文档也没有相应的内容
最后发现,其实combox的panel有个onClose的函数,在panel关闭要触发时候,尝试加入显示panel会怎么样?尝试一下,难点解决
$('#xxx').combobox('panel').panel({
onClose: function () {
$('#xxx').combobox('showPanel');
}
})

猜你喜欢

转载自www.cnblogs.com/ack6165/p/11543401.html