`
makeyouown
  • 浏览: 52522 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

模仿extjs风格写的jquery combobox

 
阅读更多
(function($) {
	jQuery.fn.combobox = function(options){
		var defaults = {
			dynamic:false,
			dataurl:'',
			imgsrc:"./images/s.gif",
			width: 162,
			data : [{text:"text",value:"value"},{text:"测试",value:"test"}]
			
		};
		var o = jQuery.extend(defaults, options);
		var pstyle ="PADDING-RIGHT: 2px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px";
				
		return this.each(function() {
				var p_id = $(this).attr("id");
				$(this).addClass("x-form-element");
				$(this).attr("style",pstyle);
				var p_list = $("<div></div>");
				$(this).append(p_list);
				p_list.addClass("x-form-field-wrap");
				p_list.css("width",o.width);
				var combo = $("<input type='text'></input");
				combo.addClass("x-form-text").addClass("x-form-field");
				p_list.append(combo);
				var comboimg = $("<img src='"+o.imgsrc+"'></img>");
		    comboimg.addClass("x-form-trigger");
		    p_list.append(comboimg);	   	    
		    var position = combo.offset();
				var inputheight = combo.outerHeight()-1;
				var divwidth = p_list.outerWidth()-1;
		    var data=[];
		    
		    
		    comboimg.click(function(){
		    	 $(".x-combo-list").each(function(){
				 			 $(this).hide();				 			   		
				 		});
		    	 var combocontent =  $("<DIV></DIV>").appendTo("body");
				 	 combocontent.addClass("x-layer").addClass("x-combo-list").css(
				 	 	{
				 	 		position:"absolute"
				 	 		
				 	 	}
				 	 );
				 	  var innerDiv = $("<DIV class=x-combo-list-inner></DIV");
				 	 combocontent.append(innerDiv);
				 	 if(o.dynamic){
				 	 		
				 	 		var response = $.ajax(
				 	 		{
				 	 		 url:o.dataurl,
				 	 		 async:false
				 	 		}
				 	 		);
				 	 		
				 	 		data = jQuery.parseJSON(response.responseText);
				 	 			if(!$.isArray(data)){				 	 					
				 	 					data = $.parseJSON(data);
				 	 					
				 	 			}
				 	 			$.each(data, function(i,n){
						 			var member = n;
						 			innerDiv.append("<DIV class='x-combo-list-item'>"+member.text+"</DIV>");
						 		});
				 	 		
				 	 	
				 	 		
				 	 }else{
				 	  $.each(o.data, function(i,n){
				 			var member = n;
				 			innerDiv.append("<DIV class='x-combo-list-item'>"+member.text+"</DIV>");
				 		});
				 	 }
				 		
				 
				 	  combocontent.css({
				 	 	"top":  position.top + inputheight,
				 	 	"left": position.left,
				 	 	"width" : divwidth 
				 	 	}).show();
				 	 	
				 	 	combocontent.bgiframe();
				 	
				 		$(document).bind("mousedown",function(evt){
				 			   var el = evt.target ? evt.target : evt.srcElement;
				 			   while(el != undefined && el.nodeType != 1){
										el = el.parentNode;
									}
									
									if(el == "undefined" || el == null || el == undefined){
										return;
									}
									
									var elclass = el.className;
									if(elclass.indexOf('combo')!=-1 || elclass.indexOf('trigger') != -1){
										return;
									}
				 			  	
				 			   $(".x-combo-list").each(function(){
				 			   		$(this).hide();
				 			   		
				 			   });
				 		});
				 	
				 	 	innerDiv.children().each(function(){
				 	 		$(this).click(function(){				 	 			
				 	 			 combo.val($(this).text());				 	 			 
				 	 			 combocontent.hide();		
				 	 			 
				 	 		});
				 	 		
				 	 		$(this).mouseover(function(){
				 	 				$(this).addClass("x-combo-selected");
				 	 		});
				 	 		$(this).mouseout(function(){
				 	 				$(this).removeClass("x-combo-selected");
				 	 		});
				 	 		
				 	 	});
				 	 	
				 	 	$(this).getValue = function(){
				 	 			$.each(data,function(i,n){
				 	 	   		if(combo.val() == n.text){
				 	 	   			return combo.val(n.value);
				 	 	   		}
				 	 	   });
				 	 			
				 	 	}
				 	 $(this).setValue = function(val){
				 	 	   $.each(data,function(i,n){
				 	 	   		if(val == n.value){
				 	 	   			combo.val(n.text);
				 	 	   		}
				 	 	   });
				 	 	   				 	 	   
				 	 }
				 	 
		    });
				
		});		
	};
})(jQuery);
分享到:
评论

相关推荐

    extjs 自动补全 模拟combobox

    EXTJS并没有直接提供一个名为"自动补全"的组件,但它可以通过模拟Combobox组件来实现这一效果。Combobox是EXTJS中的一个下拉选择框,它可以显示一个下拉列表供用户选择,同时也可以配合自动补全功能。 首先,让我们...

    extjs3.x combobox智能联想

    在EXTJS 3.x版本中,Combobox是一个非常实用的组件,它提供了下拉列表功能,用户可以在输入框中输入文字,系统会根据输入内容自动进行模糊匹配,给出相关的建议选项。这种功能在数据筛选、搜索或者选择项较多时特别...

    extjs4 ComboBox 点击下拉框 出现grid效果

    在EXTJS4中,ComboBox是一个常用的组件,它用于创建下拉选择框,通常用于输入框的辅助选择。这个组件提供了一种用户友好的方式来从一组预定义的选项中进行选择。然而,根据你的标题和描述,你似乎遇到了一个特别的...

    jQuery模仿ExtJS之TabPanel最新

    将选项卡组件渲染到某容器,参数类型可以为字符串,也可以为jQuery所加载的对象,如果为声明该参数,组件默认的承载容器为BODY。 items&lt;array&gt; 选项卡元素集合 选项卡组件渲染后就会显示的选项卡元素集合,具体参数...

    Extjs4下拉菜单ComboBox中用Grid显示通用控件

    在EXTJS4中,`ComboBox` 是一个非常常用的组件,它提供了一个下拉选择框的功能。在某些场景下,我们可能需要在下拉菜单中展示更丰富的信息,比如表格数据,这时就可以使用 `GridComboBox`。`GridComboBox` 结合了 `...

    extjs使用说明 extjs的API jQuery使用说明 jQuery的API

    ExtJS和jQuery是两种广泛使用的JavaScript库,它们在Web开发中扮演着重要角色,尤其在构建用户界面和处理DOM操作时。这篇详细的说明将分别介绍这两个库的核心概念、使用方法以及相关的API。 首先,让我们来看看...

    Extjs6中Combobox实现下拉多选

    该资源主要展示了在Extjs6中Combobox控件实现下拉选择多个数据的功能

    extjs editgrid combobox 回显

    在探讨“extjs editgrid combobox 回显”这一主题时,我们主要关注的是如何在ExtJS框架下,实现编辑网格(EditGrid)中的组合框(ComboBox)的值能够正确地回显到网格中。这一功能对于那些需要用户在表单中选择数据...

    jQuery EasyUI仿Extjs界面

    尽管两者在定位上有所不同,jQuery EasyUI 通过其简洁的API和较低的学习曲线,为开发者提供了一种仿制ExtJS界面效果的方式。 在"jQuery EasyUI 仿 Extjs 界面布局"中,主要涉及以下知识点: 1. **布局管理**:...

    详解MyEclipse10 安装Spket 1.6.23(支持Extjs4.1.1及jQuery1.8)

    ### MyEclipse10安装Spket 1.6.23及配置Extjs4.1.1与jQuery1.8智能提示详解 #### 一、安装Spket 1.6.23 在进行Spket插件安装之前,我们需要了解几个关键点: - **在线下载更新**:虽然理论上可以通过这种方式安装...

    Extjs4---combobox省市区三级联动+struts2

    在这个特定的项目“Extjs4---combobox省市区三级联动+struts2”中,我们将探讨如何利用ExtJS 4的ComboBox组件实现省市区的三级联动效果,并结合Struts2框架进行数据交互。 首先,`ComboBox`是ExtJS中的一个组件,它...

    无废话ExtJs 教程十[下拉列表:Combobox]

    在ExtJS中,下拉列表(Combobox)是常见的组件之一,它结合了输入框和下拉菜单的功能,允许用户进行选择或自由输入。本教程将深入探讨ExtJS中的Combobox组件,包括其基本用法、配置选项、事件处理和自定义功能。 1....

    EXTJS的COMBOBOX级联实现和数据提交VALUE[文].pdf

    EXTJS的ComboBox级联实现是Web应用程序中常见的一种交互方式,尤其在数据表单中用于联动选择。在本文中,我们将深入探讨EXTJS如何实现ComboBox的级联效果,并理解其数据提交VALUE的工作原理。 首先,我们需要创建两...

    JAVASCRIPT DIV 弹层(模仿EXTJS)

    为了模仿EXTJS的弹层效果,我们还需要实现层上弹层的功能。这可以通过设置Div的`z-index`属性来实现,数值越大,层的位置越靠前: ```css #popup { position: absolute; /* 或者 fixed,根据需求选择 */ z-index:...

    extjs的ComboBox 2级联动

    ExtJS的ComboBox是一个非常强大的组件,它用于创建下拉选择框。在Web应用程序中,我们经常需要实现二级联动效果,即一个ComboBox的选择会影响另一个ComboBox的显示内容。这在数据关联和筛选场景中尤为常见,例如省份...

    extJs4 ComboBox组合框实例

    extJs4 ComboBox 代码组合框实例,ComboBox 各个主要参数详细解释

    Ext combobox 下拉多选框带搜索功能

    在给定的标题“Ext ComboBox 下拉多选框带搜索功能”中,我们关注的是一个特别的ComboBox实现,它不仅允许用户从下拉列表中选择多个选项,还具备搜索功能,使得用户可以更高效地找到他们想要的选择项。 ComboBox在...

    2000多个extjs小图标适合jquery EasyUI

    在描述中提到,“2000多个extjs小图标,适合适合jquery EasyUI”,这表明这些图标设计与EXTJS和jQuery EasyUI的风格兼容,能够无缝集成到使用这两种技术的项目中。开发者可以利用这些图标来表示不同的功能、状态或...

    HTML、JS、ExtJS、jQuery智能提示Eclipse插件

    与ExtJS插件类似,Eclipse的jQuery插件增强了JavaScript编辑器,使开发者在编写jQuery代码时能获得智能提示,比如`eclipse-spket1.6.23_pojie.zip`。 5. **GEF (Graphical Editor Framework)**:`GEF-ALL-3.8.2.zip...

Global site tag (gtag.js) - Google Analytics