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 笔记二 Array和Date对象方法
May 22 Javascript
JavaScript的类型简单说明
Sep 03 Javascript
javascript拓展DOM操作 prependChild insertAfert
Nov 17 Javascript
JavaScript之编码规范 推荐
May 23 Javascript
js获取RadioButtonList的Value/Text及选中值等信息实现代码
Mar 05 Javascript
jQuery Mobile页面跳转后未加载外部JS原因分析及解决
Mar 18 Javascript
JavaScript中的高级函数
Jan 04 Javascript
详解如何在vue项目中使用lodop打印插件
Sep 27 Javascript
详解用Webpack与Babel配置ES6开发环境
Mar 12 Javascript
微信小程序动态添加view组件的实例代码
May 23 Javascript
JavaScript代码异常监控实现过程详解
Feb 17 Javascript
如何解决jQuery 和其他JS库的冲突
Jun 22 jQuery
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页面间传递参数实例代码
2008/06/05 PHP
php xml留言板 xml存储数据的简单例子
2009/08/24 PHP
php UTF-8、Unicode和BOM问题
2010/05/18 PHP
php Static关键字实用方法
2010/06/04 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
2014/06/13 PHP
php生成shtml类用法实例
2014/12/09 PHP
用Javascript实现锚点(Anchor)间平滑跳转
2009/09/08 Javascript
基于JQuery的密码强度验证代码
2010/03/01 Javascript
js获取当前select 元素值的代码
2010/04/19 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
jQuery实现图片轮播特效代码分享
2015/09/15 Javascript
js文本框输入内容智能提示效果
2015/12/02 Javascript
JavaScript获取IP获取的是IPV6 如何校验
2016/06/12 Javascript
JS简单实现浮动窗口效果示例
2016/09/07 Javascript
AngularJs ng-route路由详解及实例代码
2016/09/14 Javascript
jQuery 遍历map()方法详解
2016/11/04 Javascript
Highcharts+NodeJS搭建数据可视化平台示例
2017/01/01 NodeJs
jQuery密码强度验证控件使用详解
2017/01/05 Javascript
angularjs ocLazyLoad分步加载js文件实例
2017/01/17 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
JS脚本实现网页自动秒杀点击
2018/01/11 Javascript
微信小程序block的使用教程
2018/04/01 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
2018/10/19 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
javascript实现前端分页功能
2020/11/26 Javascript
[02:29]DOTA2英雄基础教程 陈
2013/12/17 DOTA
[45:52]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第二场 12.09
2020/12/12 DOTA
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
Python实现随机选择元素功能
2017/09/14 Python
Python获取好友地区分布及好友性别分布情况代码详解
2019/07/10 Python
Bowflex美国官方网站:高级家庭健身器材
2017/12/22 全球购物
酒店公关部经理岗位职责
2013/11/24 职场文书
研究生毕业自我鉴定范文
2014/03/27 职场文书
物业管理交接协议书
2016/03/24 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书
Python OpenCV超详细讲解读取图像视频和网络摄像头
2022/04/02 Python