`
kimmking
  • 浏览: 546829 次
  • 性别: Icon_minigender_1
  • 来自: 中华大丈夫学院
社区版块
存档分类
最新评论

Ext.ux.form.LovCombo多选下拉框的一个bug修正

阅读更多

多选下拉框组件非常简单实用,物美价廉。

参见:Ext扩展组件介绍之二--Ext.ux.form.LovCombo多选下拉框http://www.iteye.com/topic/340900

不过其有个bug,多个相同的显示值时,选一个,鼠标离开,显示所有的了:(

 

soaring 写道
这个东东是不错,不过有个BUG:如果下拉列表中有名字重复的选项,你在列表中选中一个的时候,它把所有的都选中了,之前用的是这样,不知最新版本的改了没有

 

一般来说,下拉框中的各个项的现实文字不应该重复, 重复了怎么区分呢?为什么名字一样值不一样呢?

 

不过有问题,咱就改。

 

看代码:------  Ext.ux.form.LovCombo.js  173行

,onRealBlur:function() {
		this.list.hide();
		var rv = this.getRawValue();
		var rva = rv.split(new RegExp(RegExp.escape(this.separator) + ' *'));
		var va = [];
		var snapshot = this.store.snapshot || this.store.data;

		// iterate through raw values and records and check/uncheck items
		Ext.each(rva, function(v) {
			snapshot.each(function(r) {
				if(v === r.get(this.displayField)) {
					va.push(r.get(this.valueField));
				}
			}, this);
		}, this);
		this.setValue(va.join(this.separator));
		this.store.clearFilter();
	} // eo function onRealBlur

 

确实是在鼠标离开以后,根据选中的各个显示值,去绑定的store中查找到对应的真实值的。

作者为什么要这样呢? 个人猜原因可能是store中的数据是可变的,比如filter,或是手动的修改,增删。

为了防止数据不一致,所以又找了一遍。

其实选中和取消选择时,this.value存了所有了的真实值。一般来说,这个过程是多余的,一般我们用的combo是死的,数据变动我们换store,重新绑定即可。所以,简化上面的函数成两句:

 

onRealBlur:function() {  // by kimmking
		this.list.hide();
		this.setValue(this.value);
	} 

 就可以了,也没有了那个重复显示值自动全选的bug。

 

如果不想修改原来的文件Ext.ux.form.LovCombo.js,可以在文件引用的后面,加上对文件Ext.ux.form.LovCombo.fix.js的引用:

 

// Ext.ux.form.LovCombo.fix.js

Ext.ux.form.LovCombo.prototype.onRealBlur = function() {  // by kimmking
		this.list.hide();
		this.setValue(this.value);
	} 

 

 

 

分享到:
评论
3 楼 sunchaohui_koko 2009-09-28  
选择多个鼠标离开,选择项目就消失了
2 楼 zenggang2008 2009-09-24  
是否能实现全选功能,当数据量大的时候挨个点还是不太方便
1 楼 会飞的狗 2009-05-08  
支持。给个下载地址。翻帖子不是很方便啊

相关推荐

    extjs-Ext.ux.form.LovCombo下拉框

    标题中的"extjs-Ext.ux.form.LovCombo下拉框"表明我们要讨论的是EXTJS中的一个特定组件,它是EXTJS的扩展插件,用于实现具有多选功能的下拉框。这个组件在处理火狐浏览器兼容性问题上做了优化,解决了在火狐浏览器下...

    js多选下拉框多选下拉框多选下拉框

    一个基本的多选下拉框通过`<select>`标签创建,`multiple`属性用于开启多选功能。例如: ```html 选项1 选项2 选项3 <!-- 更多选项 --> ``` 接下来,我们用JavaScript来操控这个多选下拉框。JavaScript提供...

    Extjs3 多选下拉框LovCombo

    3. **配置LovCombo**:创建一个Ext.form.ComboBox实例,指定store、displayField、valueField等配置项,并开启多选模式(multiSelect: true)。 4. **加载数据**:如果数据是异步加载的,需要在store的load方法中...

    EXT3.2 多选下拉框

    要创建一个EXT3.2的多选下拉框,首先你需要导入所需的库和CSS样式,确保页面加载EXT JS库。然后,定义一个组合框(ComboBox)实例,并设置其配置项。关键配置包括`typeAhead`(自动补全)、`triggerAction`(触发...

    Swing控件,多选下拉框

    在Java的Swing库中,`JComboBox`是用于创建下拉框的组件,它可以提供一个下拉菜单供用户选择。然而,标准的`JComboBox`只支持单选模式,即用户只能选择一个选项。要实现多选下拉框功能,我们需要自定义组件或者使用...

    Extjs3.4.0版本 多选下拉框效果支持多选/全选/全不选

    1. **创建一个新的类**:定义一个继承自Ext.form.ComboBox的新类,添加必要的配置和方法来支持多选。 2. **配置store**:设置一个数据存储(Store)来保存可选项,确保每个记录都有一个表示选中状态的字段,如`...

    ASP.NET多选下拉框自定义控件

    本文将深入探讨如何创建一个自定义的多选下拉框控件,以提升用户体验,并利用Ajax技术实现异步更新,提高页面的响应速度。 一、多选下拉框控件的理解 多选下拉框控件是一种允许用户从一系列选项中选择多个值的UI...

    使用bootstrap实现多选下拉框

    这样,你就可以创建一个具有Bootstrap风格的多选下拉框,同时还提供了搜索功能,使得用户能够更加方便地找到并选择所需的选项。记得在实际项目中根据需求调整样式和功能,以提供最佳的用户体验。

    jQuery多选下拉框插件

    `jquery.multi-select.js`是基于jQuery的插件,其主要功能是将HTML的`<select multiple>`元素转换为一个带有复选框的可多选下拉框。这个插件的主要特点有: 1. **样式自定义**:通过CSS样式,可以轻松定制多选...

    Extjs4.X下comboboxTree下拉树型菜单,完美支持多选、单选,绝对好用

    这个例子创建了一个多选的ComboboxTree,其数据源是一个包含部门信息的TreeStore。 8. **优化与注意事项** - 对于大数据量的树形结构,考虑使用异步加载(`async: true`),以提高性能。 - 考虑使用分页(`...

    CheckBoxList_WinForm多选下拉框_下拉多选_

    以上就是实现一个WinForm的多选下拉框控件的基本步骤。通过这样的自定义控件,我们可以更灵活地满足用户在界面上的选择需求,同时保持了标准控件的易用性和兼容性。在实际项目中,还可以根据具体需求进行进一步的...

    ext多选下拉框(代码及例子)

    在EXTJS中, Combo(组合框)是一个常用的组件,它可以作为单选或多选的下拉框使用。本示例将详细讲解EXTJS中实现多选下拉框的代码及实践。 在"ext多选下拉框(代码及例子)"这个主题中,主要涉及到的知识点有: 1....

    jquery 多选下拉框实例

    你可以通过查看这些文件,学习如何实际实现这样一个多选下拉框,并根据项目需求进行调整。 总之,这个实例展示了如何结合HTML、CSS和jQuery来创建一个功能丰富的多选下拉框,不仅提供了多选功能,还增加了视觉上的...

    layui多选下拉框样式,整套layui-select-multiple

    Layui是一个强大的前端UI框架,它提供了一系列美观且易于使用的组件,包括我们所讨论的多选下拉框。"layui-select-multiple"就是Layui专门为多选下拉框设计的一整套样式和功能。 首先,我们来看“layui多选下拉框...

    ext-----多选下拉框

    EXT是一个流行的JavaScript库,主要用于...EXT的多选下拉框是一个强大且可定制的组件,它为Web应用提供了丰富的交互可能性。通过理解并熟练运用上述知识点,你可以创建出符合业务需求的、用户体验良好的多选下拉框。

    EXT控件lovcombo

    总的来说,EXT控件lovcombo是EXT JS框架中的一个强大组件,提供了多选下拉框的功能,而这次的修正确保了在displayfield和valuefield不一致时仍能正常工作,增强了控件的稳定性和适应性。对于使用EXT JS开发Web应用的...

    [Ext 3.x + Ext 2.x] 下拉树 Ext.ux.ComboBoxTree

    【Ext 3.x + Ext 2.x 下拉树 Ext.ux.ComboBoxTree】是基于ExtJS框架的一个组件,它结合了下拉框(ComboBox)和树形控件(TreePanel)的功能,提供了一种用户友好的选择界面。在网页应用中,这种控件常用于展示层级...

    PB多选下拉框

    多选下拉框与传统的单选下拉框不同,后者只允许用户选择一个选项,而多选下拉框则提供了更多的灵活性,用户可以同时勾选多个选项。这种控件通常用于需要用户从一系列预定义选项中做出多个选择的场景,如设置偏好、...

    jquery.multiselect.js多选下拉框选择代码

    这时,jQuery.multiselect.js插件就派上了用场,它提供了一个强大且易于定制的多选下拉框解决方案。 一、jQuery.multiselect.js简介 jQuery.multiselect.js是基于流行的JavaScript库jQuery构建的,它扩展了...

    C# 带checkbox的多选下拉框

    通过以上步骤,我们就能在C#应用程序中实现一个带复选框的多选下拉框。这个自定义控件可以极大地提升用户体验,因为它使得多选操作更为直观和便捷。在实际项目中,还可以根据需求进一步定制,例如,添加拖放支持、...

Global site tag (gtag.js) - Google Analytics