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 相关文章推荐
我遇到的参数传递中 双引号单引号嵌套问题
Feb 11 Javascript
用js实现的自定义的对话框的实现代码
Mar 21 Javascript
JavaScript 构造函数 面相对象学习必备知识
Jun 09 Javascript
jquery判断浏览器类型的代码
Nov 05 Javascript
滚动图片效果 jquery实现回旋滚动效果
Jan 08 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
Aug 31 Javascript
Angular.js回顾ng-app和ng-model使用技巧
Apr 26 Javascript
JS二叉树的简单实现方法示例
Apr 05 Javascript
纯js实现画一棵树的示例
Sep 05 Javascript
js中的 || 与 &amp;&amp; 运算符详解
May 24 Javascript
使用apifm-wxapi模块中的问题及解决方法
Aug 05 Javascript
vue 需求 data中的数据之间的调用操作
Aug 05 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压缩HTML函数轻松实现压缩html/js/Css及注意事项
2013/01/27 PHP
浅谈apache和nginx的rewrite的区别
2013/02/22 PHP
2014过年倒计时示例
2014/01/31 PHP
模板引擎smarty工作原理以及使用示例
2014/05/25 PHP
php支付宝接口用法分析
2015/01/04 PHP
PHP中常用的数组操作方法笔记整理
2016/05/16 PHP
PHP简单留言本功能实现代码
2017/06/09 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
jQuery对表单的操作代码集合
2011/04/06 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
跨域传值即主页面与iframe之间互相传值
2013/12/09 Javascript
location.hash保存页面状态的技巧
2016/04/28 Javascript
Ionic默认的Tabs模板使用实例
2016/08/29 Javascript
jQ处理xml文件和xml字符串的方法(详解)
2016/11/22 Javascript
jQuery使用ajax方法解析返回的json数据功能示例
2017/01/10 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
2017/05/31 Javascript
jqgrid实现简单的单行编辑功能
2017/09/30 Javascript
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
深入浅析Vue全局组件与局部组件的区别
2018/06/15 Javascript
4个顶级开源JavaScript图表库
2018/09/29 Javascript
通过JS深度判断两个对象字段相同
2019/06/14 Javascript
[03:37]2016完美“圣”典 风云人物:Mikasa专访
2016/12/07 DOTA
python str与repr的区别
2013/03/23 Python
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
2016/07/01 Python
Python模拟登陆实现代码
2017/06/14 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
2020/01/25 Python
CSS3实现伪类hover离开时平滑过渡效果示例
2017/08/10 HTML / CSS
html5实现多文件的上传示例代码
2014/02/13 HTML / CSS
英国旅行箱包和行李箱购物网站:Travel Luggage & Cabin Bags
2019/08/26 全球购物
为数据库创建索引都需要注意些什么
2012/07/17 面试题
体育老师的教学自我评价分享
2013/11/19 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
王亚平太空授课观后感
2015/06/12 职场文书
童年读书笔记
2015/06/26 职场文书
用Python实现Newton插值法
2021/04/17 Python
浅析Redis Sentinel 与 Redis Cluster
2021/06/24 Redis