`
akinlong
  • 浏览: 70504 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

基于Ext3.3的可多选下拉框

阅读更多

在项目中需要可以多选的下拉框,经过研究最终得出了以下成果,特此标记

Ext.namespace("ycl.Widgets");
Wg = ycl.Widgets;
//范例
//var store = new Ext.data.ArrayStore({
//    fields: ['abbr', 'value'],
//    data : [['1','a'],['2','b'],['3','c']]
//});
//	combox = new Wg.MultiCombox({
//		store : store,
//		id : 'abbr',
//		name : 'value',
//		applyTo : 'test'
//		hiddenValue : '1,2,3'//初始化展示,选中值
//	});
//	combox.init(true);
//	alert(combox.getComboxValue());
//  <input type="text" id="test" size="20"/>
Wg.MultiCombox = function(_cfg) {
	Ext.apply(this, _cfg);
};
Ext.apply(
Wg.MultiCombox.prototype,
{
	init : function(_select) {//_select是否需要选择框
		var obj = this;
		var store = '';
		if(!obj.store){
			//如果store为空,创建后台store
			if(obj.url){
				Wg.alert('错误','缺少数据源');
				return;
			}
			url = obj.url;
			var index = [{name : 'name'}, {name : 'value'}];
			store = new Ext.data.JsonStore({
				autoLoad : true,
	            fields: index,
	            url : this.url//this.responseJson(response, list, false);
			},[]);
		}else
			store = obj.store;
		name = Ext.isEmpty(obj.name)?'name':obj.name;
		id = Ext.isEmpty(obj.id)?'value':obj.id;
		if(!obj.applyTo){
			Wg.alert('错误','下拉框缺少指向');
			return;
		}
		var applyTo = obj.applyTo;
		var tpl = '';
		if(_select){
			tpl = '<tpl for="."><div class="x-combo-list-item"><span><input type="checkbox" {[values.check?"checked":""]} value="{[values.'+id+']}"/></span><span>{'+name+'}</span></div></tpl>';
		}
		this.multiCombox = new Ext.form.ComboBox(
				{
					store : store,
					displayField : name,
					valueField : id,
					typeAhead : true,
					mode : 'local',
					triggerAction : 'all',
					selectOnFocus : true,
					emptyText:'请选择',
					applyTo : applyTo,
					editable : false,
					resizable : true,
					tpl : tpl,
					shadow : 'drop',
					onSelect : function(record, index) {
						if (this.fireEvent('beforeselect',
								this, record, index) !== false) {
							var strkey = [];
							var strvalue = [];
							if(_select){
								record.set('check', !record
										.get('check'));
								this.store.each(function(rc) {
									if (rc.get('check')) {
										strkey.push(rc.get(id));
										strvalue.push(rc.get(name));
									}
								});
							}else{
								strkey.push(record.get(id));
								strvalue.push(record.get(name));
							}
//							this.setValue(strkey.join());
							obj.hiddenValue = strkey.join();
//							this.value = strvalue.join();
							Ext.getDom(applyTo).value = strvalue.join();
							this.fireEvent('select', this,
									record, index);
						}
					},
					listeners : {"expand" : function(){//在展开时根据默认值选中项
						if(obj.hiddenValue){
							hiddenValue = obj.hiddenValue.split(',');
							store.each(function(rc) {
								for(var i=0;i<hiddenValue.length;i++){
									var eares = hiddenValue[i];
									if (rc.get(id) == eares) {
										rc.set('check', true);
									}
								}
							});
						}
					}}
				});
		if(obj.hiddenValue){//初始化默认展示值
			hiddenValue = obj.hiddenValue.split(',');
			var strvalue = [];
			store.each(function(rc) {
				for(var i=0;i<hiddenValue.length;i++){
					var eares = hiddenValue[i];
					if (rc.get(id) == eares) {
						strvalue.push(rc.get(name));
					}
				}
			});
			Ext.getDom(applyTo).value = strvalue.join();
		}
	},
	getComboxValue : function() {
		return this.hiddenValue;
	}
});
Ext.QuickTips.init();

 

 

0
2
分享到:
评论

相关推荐

    基于ext3.3的可多选下拉框js

    基于ext3.3的可多选下拉框js,可以从前台或者后台获取下拉框中数据

    js多选下拉框多选下拉框多选下拉框

    在网页开发中,多选下拉框是一种常见的交互元素,用户可以从中选择多个选项。JavaScript(简称js)作为客户端脚本语言,常被用来增强网页的交互性,其中包括实现多选下拉框的功能。本文将深入探讨如何使用JavaScript...

    EXT3.2 多选下拉框

    EXT3.2 多选下拉框是一种在EXT JS框架中实现的用户界面组件,它允许用户在下拉菜单中选择多个选项。EXT JS是一个基于JavaScript的富客户端应用开发框架,用于构建桌面级的Web应用。EXT3.2是EXT JS的一个版本,尽管...

    基于jquery实现的多选下拉框

    **基于jQuery实现的多选下拉框** 在Web开发中,传统的HTML下拉框(`&lt;select&gt;`元素)通常只支持单选,但有时我们可能需要一个可多选的下拉框来提供用户更多的选择灵活性。这篇教程将详细介绍如何利用jQuery库来创建...

    layui多选下拉框样式,整套layui-select-multiple

    在HTML页面设计中,下拉多选框是常见的交互元素,尤其在开发Web应用程序时,它们为用户提供了一种简洁、高效的方式来选择多个选项。...其样式可定制,组件API易用,使得在网页中实现多选下拉框变得轻而易举。

    Swing控件,多选下拉框

    要实现多选下拉框功能,我们需要自定义组件或者使用第三方库来扩展`JComboBox`的功能。 ### 一、自定义多选下拉框 自定义多选下拉框通常涉及以下几个关键步骤: 1. **创建自定义模型**:你需要创建一个自定义的`...

    使用bootstrap实现多选下拉框

    在Bootstrap中实现多选下拉框可以极大提升用户体验,使得用户在有限的空间内可以选择多个选项。以下是如何使用Bootstrap来创建这样一个功能的详细步骤。 首先,确保你已经在你的项目中引入了Bootstrap的相关资源。...

    ASP.NET多选下拉框自定义控件

    本文将深入探讨如何创建一个自定义的多选下拉框控件,以提升用户体验,并利用Ajax技术实现异步更新,提高页面的响应速度。 一、多选下拉框控件的理解 多选下拉框控件是一种允许用户从一系列选项中选择多个值的UI...

    CheckBoxList_WinForm多选下拉框_下拉多选_

    在Windows Forms(WinForm)开发中,经常需要创建具有多选功能的下拉框控件。这个场景下,我们可以自定义一个控件来实现“CheckBoxList”效果,即用户可以在下拉框中选择多个选项。下面我们将深入探讨如何实现这样一...

    jquery实现可多选下拉框

    本文将深入探讨如何使用 jQuery 来实现一个可多选的下拉框功能,这对于创建交互性强的用户界面非常有用。下面我们将详细讲解实现这个功能的关键步骤和涉及的技术点。 首先,我们需要一个 HTML 结构来定义我们的多选...

    html多选下拉框 ,CheckBox的Select组件 可多选的下拉框

    在HTML中,创建一个可多选的下拉框通常涉及到`&lt;select&gt;`元素与`&lt;option&gt;`元素的组合,但为了实现多选功能,我们需要使用`&lt;input type="checkbox"&gt;`和自定义的JavaScript或者利用现代浏览器支持的Web组件技术。...

    jquery 多选下拉框实例

    1. **多选下拉框基础**: - 在HTML中,`&lt;select&gt;`元素通常用于创建单选的下拉列表,通过设置`&lt;select&gt;`的`multiple`属性,可以使其变为多选模式。例如: ```html &lt;option&gt;Option 1 &lt;option&gt;Option 2 ... `...

    PB多选下拉框

    【51CTO下载-下拉多选控件】这个文件很可能是包含该多选下拉框控件的源代码或者可导入的PB组件。下载这个文件后,开发者可以将其导入到自己的PB项目中,然后根据需要进行定制和配置。通常,这样的组件会附带一些说明...

    ext-----多选下拉框

    EXT是一个流行的JavaScript库,主要用于...EXT的多选下拉框是一个强大且可定制的组件,它为Web应用提供了丰富的交互可能性。通过理解并熟练运用上述知识点,你可以创建出符合业务需求的、用户体验良好的多选下拉框。

    jquery实现的多选下拉框

    通过引入这个插件,我们可以快速地将传统的单选下拉框转化为可多选、可搜索、可自定义样式的下拉框。 在使用过程中,我们需要将下载的压缩包"ehynds-jquery-ui-multiselect-widget-03cc76d"解压,其中包含了插件的...

    C# 带checkbox的多选下拉框

    "带checkbox的多选下拉框"是一种常见的需求,它允许用户在下拉菜单中通过勾选复选框来选择多个选项。本知识点主要探讨如何在C#中实现这种控件,并将它应用到实际项目中。 首先,我们需要了解基本的Windows Forms...

    JS多选下拉框_实现多项选择

    JS多选下拉框,实现多选。点击显示下拉。 &lt;!-- function $(e){return document.getElementById(e) ;} $('btnSelect').onclick = function () { //§ó§ï?? $('status').innerHTML = $('status').innerHTML=...

    几种多选下拉框的代码

    BootstrapSelect是基于Bootstrap的扩展,它增强了原生的HTML `&lt;select&gt;` 元素,提供了更美观、可定制的多选下拉框。为了使用bootstrapSelect,你需要引入以下依赖文件: 1. Bootstrap的基础样式文件(通常为`...

    ext多选下拉框(代码及例子)

    在"ext多选下拉框(代码及例子)"这个主题中,主要涉及到的知识点有: 1. **EXTJS的Combo组件**:Combo是EXTJS中的一种表单组件,它提供了下拉列表的功能,可以用于输入或者选择数据。它既可以作为单选也可以作为...

    jQuery多选下拉框插件

    `jquery.multi-select.js`是基于jQuery的插件,其主要功能是将HTML的`&lt;select multiple&gt;`元素转换为一个带有复选框的可多选下拉框。这个插件的主要特点有: 1. **样式自定义**:通过CSS样式,可以轻松定制多选...

Global site tag (gtag.js) - Google Analytics