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格式的日期为Javascript对象的函数
Jul 13 Javascript
js 编程笔记 无名函数
Jun 28 Javascript
JavaScript函数详解
Nov 17 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
Mar 02 Javascript
js倒计时简单实现代码
Aug 11 Javascript
jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
Aug 15 Javascript
基于jQuery的select下拉框选择触发事件实例分析
Nov 18 Javascript
微信小程序中实现一对多发消息详解及实例代码
Feb 14 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
Jan 12 Javascript
vue 实现axios拦截、页面跳转和token 验证
Jul 17 Javascript
Vue组件之高德地图地址选择功能的实例代码
Jun 21 Javascript
vue下的@change事件的实现
Oct 25 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数组实现无限分类,不使用数据库,不使用递归.
2006/12/09 PHP
php 字符串函数收集
2010/03/29 PHP
php析构函数的简单使用说明
2015/08/24 PHP
Gird事件机制初级读本
2007/03/10 Javascript
jQuery 源码分析笔记(3) Deferred机制
2011/06/19 Javascript
JavaScript原型链示例分享
2014/01/26 Javascript
手机端转盘抽奖代码分享
2015/09/10 Javascript
Ionic项目中Native Camera的使用方法
2017/06/07 Javascript
详解Immutable及 React 中实践
2018/03/01 Javascript
Vue Element 分组+多选+可搜索Select选择器实现示例
2018/07/23 Javascript
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
2019/02/28 Javascript
监控Nodejs的性能实例代码
2019/07/02 NodeJs
微信小程序 自定义弹窗实现过程(附代码)
2019/12/05 Javascript
详解Vue3 Composition API中的提取和重用逻辑
2020/04/29 Javascript
[05:26]TI10典藏宝瓶套装外观展示
2020/07/03 DOTA
python文件和目录操作方法大全(含实例)
2014/03/12 Python
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
python正则表达式匹配IP代码实例
2019/12/28 Python
Python importlib动态导入模块实现代码
2020/04/16 Python
Python docutils文档编译过程方法解析
2020/06/23 Python
Python urllib库如何添加headers过程解析
2020/10/05 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
Omio法国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/13 全球购物
英国独特礼物想法和个性化礼物网站:notonthehighstreet.com
2018/04/16 全球购物
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
庆祝教师节活动方案
2014/01/31 职场文书
外贸专业求职信
2014/03/09 职场文书
担保书怎么写
2014/04/01 职场文书
个人政风行风自查自纠报告
2014/10/21 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
工作服管理制度范本
2015/08/06 职场文书
2016年幼儿园万圣节活动总结
2016/04/05 职场文书
NodeJs内存占用过高的排查实战记录
2021/05/10 NodeJs
Django与数据库交互的实现
2021/06/03 Python
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python
永中文档在线转换预览基于nginx配置部署方案
2022/06/10 Servers