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 JQUERY模板实现说明
Jul 03 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
Dec 11 Javascript
jQuery实现隔行背景色变色
Nov 24 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
Mar 22 Javascript
jQuery中Chosen三级联动功能实例代码
Mar 07 Javascript
gulp教程_从入门到项目中快速上手使用方法
Sep 14 Javascript
jquery的 filter()方法使用教程
Mar 22 jQuery
vue.js项目nginx部署教程
Apr 05 Javascript
在Mac下彻底卸载node和npm的方法
May 16 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
Apr 22 Javascript
记录一次开发微信网页分享的步骤
May 07 Javascript
Vue项目打包编译优化方案
Sep 16 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&amp;MYSQL分页原理及实现
2007/01/02 PHP
新手配置 PHP 调试环境(IIS+PHP+MYSQL)
2007/01/10 PHP
PHP mkdir()定义和用法
2009/01/14 PHP
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
php格式输出文件var_export函数实例
2014/11/15 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
2017/11/08 PHP
laravel中短信发送验证码的实现方法
2018/04/25 PHP
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
一个判断email合法性的函数[非正则]
2008/12/09 Javascript
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
学习javascript,实现插入排序实现代码
2011/07/31 Javascript
基于jquery的拖动布局插件
2011/11/25 Javascript
ExtJs使用总结(非常详细)
2012/03/22 Javascript
手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)
2014/06/06 Javascript
JS修改iframe页面背景颜色的方法
2015/04/01 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
javascript循环链表之约瑟夫环的实现方法
2017/01/16 Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
2018/02/16 Javascript
微信小程序事件流原理解析
2019/11/27 Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
2020/03/05 Javascript
[03:03]DOTA2 2017国际邀请赛开幕战队入场仪式
2017/08/09 DOTA
python检测是文件还是目录的方法
2015/07/03 Python
Python中Django发送带图片和附件的邮件
2017/03/31 Python
Python xlwt设置excel单元格字体及格式
2020/04/18 Python
学习python中matplotlib绘图设置坐标轴刻度、文本
2018/02/07 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019/08/19 Python
美国美发品牌:Bumble and Bumble
2016/10/08 全球购物
儿科护士实习自我鉴定
2013/10/17 职场文书
家长评语大全
2014/01/22 职场文书
《海伦?凯勒》教学反思
2014/04/17 职场文书
励志演讲稿范文
2014/04/29 职场文书
信息管理与信息系统专业求职信
2014/06/21 职场文书
保安辞职信范文
2015/02/28 职场文书
基于PostgreSQL/openGauss 的分布式数据库解决方案
2021/12/06 PostgreSQL
图文详解nginx日志切割的实现
2022/01/18 Servers
Java界面编程实现界面跳转
2022/06/16 Java/Android