ExtJs之带图片的下拉列表框插件


Posted in Javascript onMarch 04, 2010

在ExtJs的官方网站上有一个带图片的下拉列表,其中扩展了ExtJs的Combo,名称叫做IconCombox,官方地址为:
     http://www.extjs.com/learn/Tutorial:Extending_Ext_Class_Chinese
     但是这个IconComboBox有个缺点,就是显示的图片不能按比例变化。如果图片太大,就会出现覆盖了Combobox中的字,或者出现Icon显示不全种种问题,后来读了IconComboBox的源代码,修改了其中的问题:
     在Ext.ux.IconCombo.js这个文件中:

/** 
* Ext.ux.IconCombo Extension Class 
* 
* @author Jozef Sakalos 
* @version 1.0 
* 
* @class Ext.ux.IconCombo 
* @extends Ext.form.ComboBox 
* @constructor 
* @param {Object} config Configuration options 
*/ 
Ext.ux.IconCombo = function(config) { 
// call parent constructor 
Ext.ux.IconCombo.superclass.constructor.call(this, config); 
this.tpl = config.tpl || 
'<div class="x-combo-list-item x-icon-combo-item {' 
+ this.iconClsField 
+ '}">{' 
+ this.displayField 
+ '}</div>' this.on({ 
render:{scope:this, fn:function() { 
var wrap = this.el.up('div.x-form-field-wrap'); 
this.wrap.applyStyles({position:'relative'}); 
this.el.addClass('x-icon-combo-input'); 
this.flag = Ext.DomHelper.append(wrap, { 
tag: 'div', style:'position:absolute' 
}); 
}} 
}); 
} // end of Ext.ux.IconCombo constructor 
// extend 
Ext.extend(Ext.ux.IconCombo, Ext.form.ComboBox, { 
setIconCls: function() { 
var rec = this.store.query(this.valueField, this.getValue()).itemAt(0); 
if(rec) { 
this.flag.className = 'x-icon-combo-icon ' + rec.get(this.iconClsField); 
} 
}, 
setValue: function(value) { 
Ext.ux.IconCombo.superclass.setValue.call(this, value); 
this.setIconCls(); 
} 
}); // end of extend 
// end of file

这个文件扩展了Ext.form.ComboBox,其中主要包含了两句代码:
第17到23行,这是设置了ComboBox的显示下拉内容,将原来的显示文字修改成了显示图片加文字,这个没有什么问题,但是如果图片太大,就需要修改CSS了。
第25到34行,这里设置了ComboBox中显示的内容方式,ExtJs使用了一个很好的方式,Ext.DomHelper.append,这个是ExtJs的一个Dom API,主要对Html的Dom进行操作,这个代码的意思就是使用Dom在wrap这个单元中添加一个新的标记,这个标记的tag是div,并且使用了position:absolute这个样式。这就是问题出现的原因。对于现在的浏览器来说,对于div的背景图片是没有办法修改的。于是我将其修改为img,通过这个来修改图片的大小,这样就可以了。具体的效果如下:
ExtJs之带图片的下拉列表框插件    
完整代码如下 http://xiazai.3water.com/201003/yuanma/iconcombo.rar

Javascript 相关文章推荐
JSON 入门指南 想了解json的朋友可以看下
Aug 26 Javascript
jquery js 重置表单 reset()具体实现代码
Aug 05 Javascript
JS打开新窗口防止被浏览器阻止的方法
Jan 03 Javascript
jQuery学习笔记之创建DOM元素
Jan 19 Javascript
AngularJS 基础ng-class-even指令用法
Aug 01 Javascript
详解用webpack把我们的业务模块分开打包的方法
Jul 20 Javascript
Vue项目中quill-editor带样式编辑器的使用方法
Aug 08 Javascript
浅谈JsonObject中的key-value数据解析排序问题
Dec 06 Javascript
如何开发出更好的JavaScript模块
Dec 22 Javascript
深入剖析Node.js cluster模块
May 23 Javascript
Layui实现数据表格默认全部显示(不要分页)
Oct 26 Javascript
VUE实现自身整体组件销毁的示例代码
Jan 13 Javascript
JavaScript replace(rgExp,fn)正则替换的用法
Mar 04 #Javascript
JavaScript isPrototypeOf和hasOwnProperty使用区别
Mar 04 #Javascript
AppBaseJs 类库 网上常用的javascript函数及其他js类库写的
Mar 04 #Javascript
JavaScript类和继承 constructor属性
Mar 04 #Javascript
爆炸式的JS圆形浮动菜单特效代码
Mar 03 #Javascript
js 编写规范
Mar 03 #Javascript
jquery validation插件表单验证的一个例子
Mar 03 #Javascript
You might like
PHP面向对象法则
2012/02/23 PHP
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
PHP获取一年中每个星期的开始和结束日期的方法
2015/02/12 PHP
jquery tools 系列 scrollable学习
2009/09/06 Javascript
JS下高效拼装字符串的几种方法比较与测试代码
2010/04/15 Javascript
Kibo 用于处理键盘事件的Javascript工具库
2011/10/28 Javascript
玩转jQuery按钮 请告诉我你最喜欢哪些?
2012/01/08 Javascript
js实现拉伸拖动iframe的具体代码
2013/08/03 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
ext combobox动态加载数据库数据(附前后台)
2014/06/17 Javascript
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
2015/01/02 Javascript
JavaScript中的函数嵌套使用
2015/06/04 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
2015/08/20 Javascript
如何用JS判断两个数字的大小
2016/07/21 Javascript
AngularJS模仿Form表单提交的实现代码
2016/12/08 Javascript
如何在AngularJs中调用第三方插件库
2017/05/21 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
详解VUE中的插值( Interpolation)语法
2020/10/18 Javascript
布同自制Python函数帮助查询小工具
2011/03/13 Python
Python实现微信公众平台自定义菜单实例
2015/03/20 Python
Python单元测试框架unittest简明使用实例
2015/04/13 Python
对于Python的框架中一些会话程序的管理
2015/04/20 Python
Python3实现并发检验代理池地址的方法
2016/09/18 Python
Python 字典与字符串的互转实例
2017/01/13 Python
使用Python通过win32 COM实现Word文档的写入与保存方法
2018/05/08 Python
python2 与 python3 实现共存的方法
2018/07/12 Python
查看端口并杀进程python脚本代码
2019/12/17 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
2020/02/14 Python
pycharm 的Structure界面设置操作
2021/02/05 Python
C++:memset ,memcpy和strcpy的根本区别
2013/04/27 面试题
电气技术员岗位职责
2013/11/19 职场文书
函授药学自我鉴定
2014/02/07 职场文书
《小山羊和小灰兔》教学反思
2014/02/19 职场文书
淘宝客服工作职责
2014/07/11 职场文书
Golang表示枚举类型的详细讲解
2021/09/04 Golang