easyui datagrid combobox多选第一个时最前面会多加“,”逗号

本文介绍了一个关于使用easyUI 1.3.4版本时,在datagrid组件中使用combobox字段时出现自动添加逗号的问题,并提供了解决方案——将对话框嵌入到iframe中。
部署运行你感兴趣的模型镜像

项目中遇到的小问题,却不知道从何下手去改。

easyui,datagrid,edatagrid,某一列设置为combobox,数据从后台查询出来,当选择第一个数据的时候,前面总会自动添加上一个“,”逗号,找了半天都没有发现问题。后来请教了公司其他同事,这个dialog不能再父页面中直接打开,需要嵌入到iframe中才能避免逗号的出现。他说这是easyui1.3.4的一个bug,修改后问题果然解决了。

找时间把代码整理下贴出来。

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

<think> 我们参考提供的引用信息来解答关于EasyUI combobox下拉框的实现方法和配置。 根据引用[1]和[2],实现的关键配置是设置`multiple:true`,并且可以指定分隔符`separator`(默认是逗号)。 同,在初始化,如果需要设置默认中的值,可以在`onLoadSuccess`事件中使用`setValues`方法,将字符串按分隔符分割成数组设置。 引用[3]提到在中和取消通过`getValues`获取值并赋值给隐藏域(或其他地方),这说明了如何实获取的值。 引用[4]展示了后端获取数据的方法,但这不是前端配置的重点。 因此,我们可以总结如下: 1. 配置:`multiple: true` 2. 可配置分隔符(例如分隔符为逗号):`separator: ','` 3. 设置默认值:在`onLoadSuccess`事件中,使用`combobox('setValues', array)`,其中array是值的数组。 4. 获取的值:使用`combobox('getValues')`,返回的是数组,也可以用分隔符连接成字符串。 下面是一个完整的配置示例,参考引用[1]和[2]: ```javascript $('#comboId').combobox({ url: '...', // 数据源URL editable: false, // 是否可编辑 multiple: true, // 开启 separator: ',', // 分隔符,默认也是逗号,所以可以不写 valueField: 'id', // 值字段 textField: 'text', // 显示文本字段 onLoadSuccess: function() { // 设置默认值,假设默认值是一个用逗号分隔的字符串 var defaultValue = "value1,value2,value3"; $(this).combobox('setValues', defaultValue.split(',')); } }); // 获取中的值(数组形式) var selectedValues = $('#comboId').combobox('getValues'); // 如果需要字符串形式,可以用分隔符连接 var selectedString = selectedValues.join(','); ``` 另外,引用[2]中还展示了在面板显示调整面板高度的例子(根据项数量动态调整高度),这也是一个常用的优化。 注意:在设置默认值,`setValues`方法需要传入一个数组,所以我们把字符串用`split`方法分割成数组。 如果需要实中的值更新到某个地方(如隐藏域),可以监听`onSelect`和`onUnselect`事件,例如: ```javascript onSelect: function(record) { var values = $(this).combobox('getValues'); $('#hiddenField').val(values.join(',')); }, onUnselect: function(record) { var values = $(this).combobox('getValues'); $('#hiddenField').val(values.join(',')); } ``` 这样,每次择或取消,隐藏域的值都会被更新为当前中的值(以逗号分隔的字符串)。 以上便是EasyUI combobox实现下拉框的主要方法和配置。 </think> ### EasyUI Combobox 下拉框的实现方法与配置 要实现 EasyUI combobox功能,需通过以下关键配置和事件处理(参考引用[1][2][3]): #### 1. **核心配置属性** ```javascript $('#yourCombo').combobox({ multiple: true, // 启用模式 [^1] separator: ',', // 值分隔符(默认逗号)[^1] valueField: 'id', // 值字段(如数据库ID) textField: 'name', // 显示文本字段 editable: false, // 禁止手动输入(推荐)[^2] url: 'data_source.json' // 数据源URL }); ``` #### 2. **设置默认值** 在 `onLoadSuccess` 事件中初始化中值(引用[1][2]): ```javascript onLoadSuccess: function() { // 将字符串(如"v1,v2")转为数组设置 $('#yourCombo').combobox("setValues", "val1,val2".split(',')); } ``` #### 3. **获取中值** ```javascript // 返回数组:["val1", "val2"] const values = $('#yourCombo').combobox('getValues'); // 返回逗号分隔的字符串(配置的分隔符) const str = values.join(','); ``` #### 4. **动态监听择** 实响应择/取消操作(引用[3]): ```javascript onSelect: function(record) { const currentValues = $(this).combobox('getValues'); console.log("当前中值:", currentValues); }, onUnselect: function(record) { const currentValues = $(this).combobox('getValues'); console.log("取消后剩余值:", currentValues); } ``` #### 5. **高度动态调整** 根据项数量自动调整下拉高度(引用[2]): ```javascript onShowPanel: function() { const count = $(this).combobox('panel')[0].childElementCount; $(this).combobox('panel').height(count > 10 ? 200 : "auto"); } ``` #### 6. **后端数据示例(Java)** 返回数据需匹配 `valueField/textField`(引用[4]): ```java public List<Map> getComboboxData(String code) { String sql = "SELECT id AS valueField, name AS textField FROM table"; // 执行查询并返回 List<Map> } ``` > **注意事项** > - 数据源字段需唯一,避免重复值冲突 > - 大量数据建议启用分页(需配合 `pagination:true`) > - 默认值字符串格式需与 `separator` 配置一致 --- ### 相关问题 1. EasyUI combobox 如何实现全/全不功能? 2. 当 combobox 数据量过大,应该如何优化性能? 3. 如何将 combobox 的值提交到表单并后台接收? 4. 在模式下,如何自定义下拉项的显示样式? [^1]: easyui combobox [^2]: EasyUI实现combobox下拉框以及取值 [^3]: 关于easyui combobox下拉框实现框的实现 [^4]: easyui combobox下拉框实现框以及全、全不的实现
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值