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 相关文章推荐
用javascript父窗口控制只弹出一个子窗口
Apr 10 Javascript
javascript中的作用域scope介绍
Dec 28 Javascript
Jquery倒数计时按钮setTimeout的实例代码
Jul 04 Javascript
JS应用正则表达式转换大小写示例
Sep 18 Javascript
对JavaScript客户端应用编程的一些建议
Jun 24 Javascript
jQuery自定义滚动条完整实例
Jan 08 Javascript
教你一步步用jQyery实现轮播器
Dec 18 Javascript
Bootstrap select多选下拉框实现代码
Dec 23 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
Jun 13 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
Sep 19 Javascript
小程序云开发获取不到数据库记录的解决方法
May 18 Javascript
vue使用codemirror的两种用法
Aug 27 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 Token(令牌)设计
2008/03/15 PHP
检测png图片是否完整的php代码
2010/09/06 PHP
yii2.0实现pathinfo的形式访问的配置方法
2016/04/06 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
详解yii2使用多个数据库的案例
2017/06/16 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
jQuery对象和DOM对象的相互转化实现代码
2010/03/02 Javascript
javascript创建数组之联合数组的使用方法示例
2013/12/26 Javascript
jquery实现select选中行、列合计示例
2014/04/25 Javascript
php和js对数据库图片进行等比缩放示例
2014/04/28 Javascript
浅谈EasyUI中编辑treegrid的方法
2015/03/01 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
2016/07/04 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
2016/11/23 Javascript
谈谈JavaScript中浏览器兼容问题的写法小议
2016/12/17 Javascript
JavaScript表单验证的两种实现方法
2017/02/11 Javascript
js实现鼠标拖动功能
2017/03/20 Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
2017/09/05 Javascript
基于BootStrap的文本编辑器组件Summernote
2017/10/27 Javascript
vue中post请求以a=a&amp;b=b 的格式写遇到的问题
2018/04/27 Javascript
layui2.0使用table+laypage实现真分页
2019/07/27 Javascript
vue实现学生信息管理系统
2020/05/30 Javascript
解决vant的Toast组件时提示not defined的问题
2020/11/11 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
2021/01/19 Javascript
Python-OpenCV基本操作方法详解
2018/04/02 Python
Python中使用logging和traceback模块记录日志和跟踪异常
2019/04/09 Python
python求平均数、方差、中位数的例子
2019/08/22 Python
Python中注释(多行注释和单行注释)的用法实例
2019/08/28 Python
使用python绘制温度变化雷达图
2019/10/18 Python
Windows下pycharm安装第三方库失败(通用解决方案)
2020/09/17 Python
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
瑜伽国际:Yoga International
2018/04/18 全球购物
电子信息科学专业自荐信
2014/01/30 职场文书
七夕活动策划方案
2014/08/16 职场文书
《走遍天下书为侣》教学反思
2016/02/22 职场文书
职场中的你,辞职信写对了吗?
2019/06/26 职场文书