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 相关文章推荐
window.js 主要包含了页面的一些操作
Dec 23 Javascript
IE中的File域无法清空使用jQuery重设File域
Apr 24 Javascript
jquery仿百度百科底部浮动导航特效
Aug 08 Javascript
JavaScript如何实现图片懒加载(lazyload) 提高用户体验(增强版)
Nov 30 Javascript
Js实现中国公民身份证号码有效性验证实例代码
May 03 Javascript
Vue中父组件向子组件通信的方法
Jul 11 Javascript
ECMAScript6变量的解构赋值实例详解
Sep 19 Javascript
JS删除数组里的某个元素方法
Feb 03 Javascript
JS中注入eval, Function等系统函数截获动态代码
Apr 03 Javascript
JavaScript工具库MyTools详解
Jan 01 Javascript
vue props 单项数据流实例分享
Feb 16 Javascript
vue项目proxyTable配置和部署服务器
Apr 14 Vue.js
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 网上商城促销设计实例代码
2012/02/17 PHP
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
php判断是否连接上网络的方法实例详解
2016/12/14 PHP
详解yii2实现分库分表的方案与思路
2017/02/03 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
2018/05/02 PHP
Laravel如何同时连接多个数据库详解
2019/08/13 PHP
js静态作用域的功能。
2006/12/25 Javascript
JavaScript 字符编码规则
2009/05/04 Javascript
jQuery EasyUI API 中文文档 DateTimeBox日期时间框
2011/10/16 Javascript
jQuery 滑动方法slideDown向下滑动元素
2014/01/16 Javascript
Javascript 浮点运算精度问题分析与解决
2014/03/26 Javascript
JavaScript实现图片轮播的方法
2015/07/31 Javascript
jQuery简单注册和禁用全局事件的方法
2016/07/25 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
基于angularJS的表单验证指令介绍
2016/10/21 Javascript
JS中作用域和变量提升(hoisting)的深入理解
2016/10/31 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
bootstrapValidator自定验证方法写法
2016/12/01 Javascript
jQuery插件版本冲突的处理方法分析
2017/01/16 Javascript
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
2018/04/26 Javascript
讲解vue-router之什么是动态路由
2018/05/28 Javascript
Vue.directive使用注意(小结)
2018/08/31 Javascript
vue 中Virtual Dom被创建的方法
2019/04/15 Javascript
[52:36]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
2017/08/07 Python
python实现批量视频分帧、保存视频帧
2019/05/31 Python
python实现智能语音天气预报
2019/12/02 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
意大利奢侈品多品牌集合店:TheDoubleF
2019/08/24 全球购物
安全教育实施方案
2014/03/02 职场文书
户外拓展训练感想
2015/08/07 职场文书
2016年大学光棍节活动总结
2016/04/05 职场文书
pycharm部署django项目到云服务器的详细流程
2021/06/29 Python
关于PostgreSQL JSONB的匹配和交集问题
2021/09/14 PostgreSQL