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 相关文章推荐
发两个小东西,ASP/PHP 学习工具。 用JavaScript写的
Apr 12 Javascript
js保存当前路径(cookies记录)
Dec 14 Javascript
简短几句 通俗解释javascript的闭包
Jan 17 Javascript
jQuery EasyUI API 中文文档 - EasyLoader 加载器
Sep 29 Javascript
jquery跟js初始化加载的多种方法及区别介绍
Apr 02 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
Dec 05 Javascript
jQuery中的insertBefore(),insertAfter(),after(),before()区别介绍
Sep 01 Javascript
ES6 Promise对象概念与用法分析
Apr 01 Javascript
Angular2使用Augury来调试Angular2程序
May 21 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
Jan 09 Javascript
详解如何使用node.js的开发框架express创建一个web应用
Dec 20 Javascript
微信小程序 点击切换样式scroll-view实现代码实例
Oct 11 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 fsockopen中多线程问题的解决办法[翻译]
2011/11/09 PHP
php出现web系统多域名登录失败的解决方法
2014/09/30 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
2014/12/16 PHP
PHP开发的微信现金红包功能示例
2017/06/29 PHP
javascript下过滤数组重复值的代码
2007/09/10 Javascript
一个可以随意添加多个序列的tag函数
2009/07/21 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
2013/10/08 Javascript
js简单实现HTML标签Select联动带跳转
2013/10/23 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
2016/05/13 Javascript
javascript获取网页各种高宽及位置的方法总结
2016/07/27 Javascript
jQuery Easyui datagrid连续发送两次请求问题
2016/12/13 Javascript
JavaScript中捕获与冒泡详解及实例
2017/02/03 Javascript
javascript深拷贝和浅拷贝详解
2017/02/14 Javascript
Vue 组件(component)教程之实现精美的日历方法示例
2018/01/08 Javascript
vue 中动态绑定class 和 style的方法代码详解
2018/06/01 Javascript
layer弹出层全屏及关闭方法
2018/08/17 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
JavaScript静态作用域和动态作用域实例详解
2019/06/17 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
2020/02/12 Javascript
深入浅析JavaScript中的in关键字和for-in循环
2020/04/20 Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
2020/04/26 Javascript
Angular5整合富文本编辑器TinyMCE的方法(汉化+上传)
2020/05/26 Javascript
Python数据类型详解(一)字符串
2016/05/08 Python
快速查找Python安装路径方法
2020/02/06 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
Python实现aes加密解密多种方法解析
2020/05/15 Python
Python OrderedDict字典排序方法详解
2020/05/21 Python
Python必须了解的35个关键词
2020/07/16 Python
Vince官网:全球著名设计师品牌,休闲而优雅的服饰
2017/01/15 全球购物
Vuori官网:运动服装的终级表现
2021/01/27 全球购物
长青弘远的面试题
2012/06/09 面试题
yy生日主持词
2014/03/20 职场文书
副科竞争上岗演讲稿
2014/05/12 职场文书
道德与公民自我评价
2015/03/09 职场文书
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL