预览:
<INPUT TYPE="" NAME="" id='multiselect'>
<script>
Ext.onReady(function() {
var arr = [['1', '项一'], ['2', '项二'], ['3', '项三'],['4', '项四'],['5', '项五']];
var arr2 = [['1', '项一'], ['2', '项二']];
var auto_field = new Ext.form.MultiSelectField( {
applyTo:'multiselect',
hiddenName:'hid', //Ext.get('hid').getValue() 可以得到索引号ID数组
contextArray : arr,
fieldLabel : 'adfadsf',
id : 'test',
defaltValueArray:arr2,
name : 'test'
});
});
</script>
EXT扩展组件:
Ext.form.MultiSelectField = Ext.extend(Ext.form.TriggerField, {
readOnly : true,
defaultAutoCreate : {
tag : "input",
type : "text",
size : "24",
autocomplete : "off"
},
displayField : 'text',
contextArray : undefined,
valueField : undefined,
hiddenName : undefined,
listWidth : undefined,
minListWidth : 50,
defaltValueArray:undefined,
layerHeight : undefined,
minLayerHeight : 60,
value : undefined,
baseParams : {},
checkpanel : undefined,
initComponent : function() {
Ext.form.MultiSelectField.superclass.initComponent.call(this);
this.addEvents('select', 'expand', 'collapse', 'beforeselect');
if (this.transform) {
this.allowDomMove = false;
var s = Ext.getDom(this.transform);
if (!this.hiddenName) {
this.hiddenName = s.name;
}
s.name = Ext.id();
if (!this.lazyRender) {
this.target = true;
this.el = Ext.DomHelper.insertBefore(s, this.autoCreate
|| this.defaultAutoCreate);
Ext.removeNode(s);
this.render(this.el.parentNode);
} else {
Ext.removeNode(s);
}
}
},
onRender : function(ct, position) {
Ext.form.MultiSelectField.superclass.onRender.call(this, ct, position);
if (this.hiddenName) {
this.hiddenField = this.el.insertSibling( {
tag : 'input',
type : 'hidden',
name : this.hiddenName,
id : (this.hiddenId || this.hiddenName)
}, 'before', true);
this.hiddenField.value = this.hiddenValue !== undefined
? this.hiddenValue
: this.value !== undefined ? this.value : '';
this.el.dom.removeAttribute('name');
}
if (Ext.isGecko) {
this.el.dom.setAttribute('autocomplete', 'off');
}
this.initList();
},
initList : function() {
if (!this.list) {
var cls = 'x-multiselectfield-list';
this.list = new Ext.Layer( {
shadow : this.shadow,
cls : [cls, this.listClass].join(' '),
constrain : false
});
var lw = this.listWidth
|| Math.max(this.wrap.getWidth(), this.minListWidth);
this.list.setWidth(lw);
this.list.swallowEvent('mousewheel');
this.innerList = this.list.createChild( {
cls : cls + '-inner'
});
this.innerList.setWidth(lw - this.list.getFrameWidth('lr'));
this.innerList.setHeight(this.layerHeight || this.minLayerHeight);
if (!this.checkpanel) {
this.checkpanel = this.CheckPanel(this.innerList);
}
this.checkpanel.render();
}
},
onSelect : function(id, text, checked) {
this.setValue(id, text, checked);
},
CheckPanel : function(el) {
var checkpanel = new Ext.Panel( {
el : el,
autoScroll : true
});
var multiselectField = this;
if (typeof this.contextArray != 'undefined') {
for (var i = 0; i < this.contextArray.length; i++) {
var contArry = this.contextArray[i];
var auto_field = new Ext.form.Checkbox( {
boxLabel : contArry[1],
id : contArry[0],
name : contArry[0],
cls : 'x-multiselectfield-list'
});
auto_field.on('check', function(auto_field) {
multiselectField.onSelect(auto_field.id,auto_field.boxLabel, auto_field.checked);
});
if(typeof this.defaltValueArray != 'undefined') {
for (var j = 0; j < this.defaltValueArray.length; j++) {
var defvalArry = this.defaltValueArray[j];
if(defvalArry[0]==contArry[0]) {
auto_field.checked=true;
}
}
}
checkpanel.add(auto_field);
}
}
return checkpanel
},
getValue : function() {
if (typeof this.value != 'undefined') {
return this
分享到:
相关推荐
EXT3.2 多选下拉框是一种在EXT JS框架中实现的用户界面组件,它允许用户在下拉菜单中选择多个选项。EXT JS是一个基于JavaScript的富客户端应用开发框架,用于构建桌面级的Web应用。EXT3.2是EXT JS的一个版本,尽管...
在网页开发中,多选下拉框是一种常见的交互元素,用户可以从中选择多个选项。JavaScript(简称js)作为客户端脚本语言,常被用来增强网页的交互性,其中包括实现多选下拉框的功能。本文将深入探讨如何使用JavaScript...
要实现多选下拉框功能,我们需要自定义组件或者使用第三方库来扩展`JComboBox`的功能。 ### 一、自定义多选下拉框 自定义多选下拉框通常涉及以下几个关键步骤: 1. **创建自定义模型**:你需要创建一个自定义的`...
在Bootstrap中实现多选下拉框可以极大提升用户体验,使得用户在有限的空间内可以选择多个选项。以下是如何使用Bootstrap来创建这样一个功能的详细步骤。 首先,确保你已经在你的项目中引入了Bootstrap的相关资源。...
本文将深入探讨如何创建一个自定义的多选下拉框控件,以提升用户体验,并利用Ajax技术实现异步更新,提高页面的响应速度。 一、多选下拉框控件的理解 多选下拉框控件是一种允许用户从一系列选项中选择多个值的UI...
在Windows Forms(WinForm)开发中,经常需要创建具有多选功能的下拉框控件。这个场景下,我们可以自定义一个控件来实现“CheckBoxList”效果,即用户可以在下拉框中选择多个选项。下面我们将深入探讨如何实现这样一...
在EXT框架中,"多选下拉框"是一种常见的组件,它允许用户在下拉列表中选择多个选项,而不是仅限于单选。 在EXT中实现多选下拉框,主要涉及到EXT的`ComboBox`组件和`multiSelect`配置项。`ComboBox`是一个灵活的输入...
Layui是一个强大的前端UI框架,它提供了一系列美观且易于使用的组件,包括我们所讨论的多选下拉框。"layui-select-multiple"就是Layui专门为多选下拉框设计的一整套样式和功能。 首先,我们来看“layui多选下拉框...
在"ext多选下拉框(代码及例子)"这个主题中,主要涉及到的知识点有: 1. **EXTJS的Combo组件**:Combo是EXTJS中的一种表单组件,它提供了下拉列表的功能,可以用于输入或者选择数据。它既可以作为单选也可以作为...
1. **多选下拉框基础**: - 在HTML中,`<select>`元素通常用于创建单选的下拉列表,通过设置`<select>`的`multiple`属性,可以使其变为多选模式。例如: ```html <option>Option 1 <option>Option 2 ... `...
【PB多选下拉框】是一种在PowerBuilder(PB)应用程序中实现的用户界面组件,它允许用户在下拉菜单中选择多个选项。PB90指的是PowerBuilder 9.0版本,这是一款由Sybase公司(现已被SAP收购)开发的可视化编程工具,...
《jQuery实现的多选下拉框深度解析》 在网页开发中,为了提供更好的用户体验,我们经常需要使用到多选下拉框。jQuery库为我们提供了丰富的功能,使得创建交互式的多选下拉框变得轻而易举。在这里,我们将深入探讨...
"带checkbox的多选下拉框"是一种常见的需求,它允许用户在下拉菜单中通过勾选复选框来选择多个选项。本知识点主要探讨如何在C#中实现这种控件,并将它应用到实际项目中。 首先,我们需要了解基本的Windows Forms...
**基于jQuery实现的多选下拉框** 在Web开发中,传统的HTML下拉框(`<select>`元素)通常只支持单选,但有时我们可能需要一个可多选的下拉框来提供用户更多的选择灵活性。这篇教程将详细介绍如何利用jQuery库来创建...
JS多选下拉框,实现多选。点击显示下拉。 <!-- function $(e){return document.getElementById(e) ;} $('btnSelect').onclick = function () { //§ó§ï?? $('status').innerHTML = $('status').innerHTML=...
在HTML中,创建一个可多选的下拉框通常涉及到`<select>`元素与`<option>`元素的组合,但为了实现多选功能,我们需要使用`<input type="checkbox">`和自定义的JavaScript或者利用现代浏览器支持的Web组件技术。...
在网页开发中,多选下拉框是一种常见的用户交互元素,允许用户在多个选项中进行复选选择。这里我们将深入探讨“bootstrapSelect”和“EasyUI”这两种流行的前端框架实现多选下拉框的方法,以及它们所依赖的文件。 ...
在Swing中,多选下拉框通常由JComboBox类实现,但默认的JComboBox只支持单选。为了实现多选功能,我们需要扩展JComboBox或者使用第三方库,如JList或JTable与弹出面板组合。 本主题涉及的知识点主要包括以下几个...
本文将深入探讨如何使用 jQuery 来实现一个可多选的下拉框功能,这对于创建交互性强的用户界面非常有用。下面我们将详细讲解实现这个功能的关键步骤和涉及的技术点。 首先,我们需要一个 HTML 结构来定义我们的多选...
为了提供一个统一且可自定义样式的多选下拉框,我们可以借助jQuery和其他辅助库,如Bootstrap的Selectpicker或者Chosen插件。这些工具允许我们创建更现代、更易用的多选下拉组件。 1. **jQuery基础**:jQuery是一个...