Ext.ux.form.ComboBoxAdd.js
Ext.namespace("Ext.ux.form");
Ext.ux.form.ComboBoxAdd = function(config) {
Ext.ux.form.ComboBoxAdd.superclass.constructor.apply(this, arguments);
};
Ext.extend(Ext.ux.form.ComboBoxAdd, Ext.form.ComboBox, {
/***
* trigger classes.
*/
trigger1Class: '',
trigger2Class: 'x-form-add-trigger',
/***
* initComponent
*/
initComponent : function(){
Ext.ux.form.ComboBoxAdd.superclass.initComponent.call(this);
/***
* @event add
* @param {field: Ext.ux.form.ComboBoxAdd, button: Ext.Element}
* fires when 2nd trigger is clicked
*/
this.addEvents({add : true});
// implement triggerConfig from Ext.form.TwinTriggerField
this.triggerConfig = {
tag:'span', cls:'x-form-twin-triggers', cn:[
{tag: "img", src: Ext.BLANK_IMAGE_URL, cls: "x-form-trigger " + this.trigger1Class},
{tag: "img", src: Ext.BLANK_IMAGE_URL, cls: "x-form-trigger " + this.trigger2Class}
]};
},
/***
* getTrigger
* copied from Ext.form.TwinTriggerField
* @param {Object} index
*/
getTrigger : function(index){
return this.triggers[index];
},
/***
* initTrigger
* copied from Ext.form.TwinTriggerField
*/
initTrigger : function(){
var ts = this.trigger.select('.x-form-trigger', true);
this.wrap.setStyle('overflow', 'hidden');
var triggerField = this;
ts.each(function(t, all, index){
t.hide = function(){
var w = triggerField.wrap.getWidth();
this.dom.style.display = 'none';
triggerField.el.setWidth(w-triggerField.trigger.getWidth());
};
t.show = function(){
var w = triggerField.wrap.getWidth();
this.dom.style.display = '';
triggerField.el.setWidth(w-triggerField.trigger.getWidth());
};
var triggerIndex = 'Trigger'+(index+1);
if(this['hide'+triggerIndex]){
t.dom.style.display = 'none';
}
t.on("click", this['on'+triggerIndex+'Click'], this, {preventDefault:true});
t.addClassOnOver('x-form-trigger-over');
t.addClassOnClick('x-form-trigger-click');
}, this);
this.triggers = ts.elements;
},
/***
* onTrigger1Click
* defer to std ComboBox trigger method
*/
onTrigger1Click : function() {
this.onTriggerClick();
},
/***
* onTrigger2Click
* this is the "add" button handler. fire 'add' event
*/
onTrigger2Click : function() {
this.fireEvent('add', {field: this, button: this.triggers[1]});
},
/***
* insert
* provide a convenience method to insert ONE AND ONLY ONE record to the store.
* @param {Object} index
* @param {Object} data (
*/
insert : function(index, data) {
this.reset();
var rec = new this.store.recordType(data);
rec.id = rec.data.id;
this.store.insert(index, rec);
this.setValue(rec.data.id);
this.fireEvent('select', this, rec, index);
}
});
html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ext.ux.form.ComboBoxAdd</title>
<link rel="stylesheet" type="text/css" href="http://extjs.com/deploy/dev/resources/css/ext-all.css" />
<script type="text/javascript" src="http://extjs.com/deploy/dev/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="http://extjs.com/deploy/dev/ext-all-debug.js"></script>
<style>
.x-form-add-trigger {
background-image: url(../../resources/images/default/grid/wait.gif) !important;
background-position: center center !important;
cursor: pointer;
border: 0 !important;
margin-left: 2px;
}
</style>
<script type="text/javascript" src="cbAdd.js"></script>
<script type="text/javascript">
Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget = 'side';
Ext.onReady(function(){
var x = new Ext.ux.form.ComboBoxAdd({
renderTo:Ext.getBody(),
hiddenName : 'q_type', displayField : 'name', valueField : 'code', width : 100, emptyText : '全部······', mode : 'local', triggerAction : 'all', selectOnFocus : true
});
x.on('add', function(ev) {
alert('you clicked the add button'); // <-- you might show a form on a dialog here
});
});
</script>
</head>
<body>
<a href="http://extjs.com/forum/showthread.php?t=20511" target="_blank">原贴地址</a>
</body>
</html>
效果:
[img]/upload/attachment/118059/62a0235c-ad93-3129-bfe9-1ebf301e3c35.png[/img]
- 大小: 1.1 KB
分享到:
相关推荐
extjs多选下拉框,Ext.ux.form.LovCombo,extjs 以修复多选下拉框火狐下取不到值的问题,火狐下div不显示背景色的问题
The class is ready for i18n, override the Ext.ux.UploadDialog.Dialog.prototype.i18n object with your language strings, or just pass i18n object in config. Server side handler. The files in the queue...
Ext.ux.tree.treegrid异步加载,点击节点加载数据
基于Ext Core的包含校验功能的表单提交扩展Ext.ux.submit
1. Ext.form.NumberField 2. Ext.form.TextArea 3. Ext.form.TriggerField 4. Ext.form.DateField 5. Ext.form.ComboBox 6. Ext.form.TimeField
ext.ux.uploadDialog实例
EXTjs的上传组件
[Ext 3.x + Ext 2.x] 下拉树 Ext.ux.ComboBoxTree
Ext.ux.UploadDialog批量上传文件应用,后台采用com.jspsmart.upload.SmartUpload。myeclipse工程,导入即可运行。
Extjs4.1多个扩展 1、Ext.ux.aceeditor.Panel...12、Ext.ux.form.field.TinyMCE 13、Ext.ux.form.field.Grid 主页:https://github.com/harrydeluxe/extjs-ux 注明:在Extjs4.1上是可以使用的,Extjs4.2部分会有问题。
Ext+SwfUpload做的一个多文件上传的插件.
带复选框的这是经过测试可以用的下拉树
在做文件上传的时候,发现了Ext.ux.UploadDialog这个强大的东西,实现了一下
工程文件 博文链接:https://mutongwu.iteye.com/blog/693692
这个文件是重写ext的ColorPickerFieldPlus控件,实现自定义调色,和ps取颜色一样,比Ext自带的颜色多很多,是自己可以调的
Extjs4实现的Ext.ux.form.TinyMCETextArea html580 inyMCETextArea
Ext.ux.GoogleChart extjs插件Ext.ux.GoogleChart extjs插件
Ext.ux.touch.DateTimePicker 该扩展通过扩展 Ext.Picker 为 Sencha Touch 框架提供了一个 DateTimePicker。用法datetimePicker = new Ext.ux.touch.DateTimePicker({ useTitles: true, id: 'dt', value: { day: 23,...
ext.ux.menu.storemenu.zip