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 相关文章推荐
js parsefloat parseint 转换函数
Jan 21 Javascript
javascript获取鼠标点击元素对象(示例代码)
Dec 20 Javascript
js中跨域方法原理详解
Jul 19 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
Dec 26 Javascript
深入理解JavaScript中的浮点数
May 18 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
Jun 06 Javascript
JavaScript类的写法
Sep 17 Javascript
JavaScript实现左侧菜单效果
Dec 14 Javascript
mpvue写一个CPASS小程序的示例
Sep 04 Javascript
axios携带cookie配置详解(axios+koa)
Dec 28 Javascript
JavaScript进阶(四)原型与原型链用法实例分析
May 09 Javascript
前端性能优化建议
Sep 17 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
Syphon 使用方法
2021/03/03 冲泡冲煮
phpmyadmin的#1251问题
2006/11/25 PHP
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
2013/07/15 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
2016/10/29 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2021/03/09 PHP
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
基于JavaScript实现继承机制之原型链(prototype chaining)的详解
2013/05/07 Javascript
JS 精确统计网站访问量的实例代码
2013/07/05 Javascript
jQuery实现三级菜单的代码
2016/05/09 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
jQuery实现自动输入email、时间和域名的方法
2016/08/24 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
2019/04/17 Javascript
vue.js中ref和$refs的使用及示例讲解
2019/08/14 Javascript
python求众数问题实例
2014/09/26 Python
Python中线程编程之threading模块的使用详解
2015/06/23 Python
机器学习python实战之手写数字识别
2017/11/01 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
python re.sub()替换正则的匹配内容方法
2019/07/22 Python
自定义django admin model表单提交的例子
2019/08/23 Python
8段用于数据清洗Python代码(小结)
2019/10/31 Python
python实现的多任务版udp聊天器功能案例
2019/11/13 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
2020/12/13 Python
工作建议书范文
2014/05/13 职场文书
大学新闻系求职信
2014/06/03 职场文书
迁户口计划生育证明
2014/10/19 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
民事起诉书范本
2015/05/19 职场文书
圣贤教育改变命运观后感
2015/06/16 职场文书
2016情人节宣传语
2015/07/14 职场文书
有关浪费资源的建议书
2015/09/14 职场文书
Python实现查询剪贴板自动匹配信息的思路详解
2021/07/09 Python
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS