(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风格写的jquery combobox
热度:66 发布时间:2012-09-21 15:47:26.0
相关解决方案
- jquery 获取jsp页面的id解决方法
- jquery,二维数组取值。解决办法
- 求jquery.form.js+jquery.validate.min.js 用ajax提交表单的代码范例
- Extjs grid 失去选中行的列数据
- jquery 提交form表单不用插件的那种 如何提交
- jquery ajax回传没有值,该怎么处理
- extjs 后台有数据,但是返回到页面为空,jsonStore加载错误,这是咋回事
- jquery easyUI datagrid struts2有关问题
- jquery form 有关问题
- springmvc jquery ajax 提交复杂对象,415异常解决办法
- 应用Struts2 与 jquery,ajax验证用户注册,不用从数据库获取数据
- jquery ajax select解决方法
- php jquery check username ajax检察帐号唯一性
- jquery ajax返回值的有关问题
- jquery 或js 获取指定字符间的字符串,并轮换。回答出来的是大神级~
- jquery 的bind里面能不能获得返回值呢? 对小弟我很难的有关问题啊
- S2SH、EXTJS、JSON调整后,EXTJS接收不到Struts2的Action传回的值,无语
- jquery 的uploadify下传图片怎么让出错信息提示成中文
- extjs 简单有关问题
- extjs+struts2解决办法
- java+jquery easy ui + json + struts分页例子
- jquery easyui分页效率有关问题
- jquery 如何获得动态添加后的子元素个数?
- jQuery.ajax()请求struts2数据 回到data值了undefined
- 关于Struts2 jQuery Plugin的 Result,该如何处理
- Jquery 点击按钮实现图片翻页,该如何解决
- jquery 关于监听checkbox的选中和不选中事件,该如何解决
- ExtJs 处理 datetime 有关问题
- jQuery append动态添加的页面对象如何处理刷新掉
- Jquery+json解决思路