`
doris1bruce
  • 浏览: 4686 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

jquery 插件 实现一个combox

阅读更多

[1].[代码] jquery 插件

001 (function ($) {
002     $.fn.DhoverClass = function (className) {
003         return $(this).hover(function () { $(this).addClass(className); }, function () { $(this).removeClass(className); });
004     }
005     function getDulyOffset(target, w, h) {
006         var pos = target.offset();
007         var height = target.outerHeight();
008         var newpos = { left: pos.left, top: pos.top + height - 1 }
009         var bw = document.documentElement.clientWidth;
010         var bh = document.documentElement.clientHeight;
011         if ((newpos.left + w) >= bw) {
012             newpos.left = bw - w - 2;
013         }
014         if ((newpos.top + h) >= bh && bw > newpos.top) {
015             newpos.top = pos.top - h - 2;
016         }
017         return newpos;
018     }
019     function returnfalse() { return false; };
020     $.fn.dropdown = function (o) {
021         var options = $.extend({
022             vinputid: null,
023             cssClass: "dropdown",
024             containerCssClass: "dropdowncontainer",
025             dropwidth: false,
026             dropheight: "auto",
027             autoheight: true,
028             editable: false,
029             selectedchange: false,
030             items: [],
031             selecteditem: false,
032             parse: {
033                 name: "list",
034                 render: function (parent) {
035                     var m = this;
036                     var p = this.target;
037                     var ul = $("<ul/>");
038                     if (this.items && this.items.length > 0) {
039                         $.each(this.items, function () {
040                             var item = this;
041                             var d = $("<div/>").html(item.text).data("data", item);
042                             var li = $("<li/>");
043                             li.DhoverClass("hover").append(d)
044                             .click(function () {
045                                 var t = li.find(">div").data("data");
046                                 p.SelectedChanged(t);
047                             });
048                             if (item.classes && item.classes != "") {
049                                 d.addClass(item.classes);
050                             }
051                             ul.append(li);
052                         });
053                     }
054                     parent.append(ul);
055                     this.parent = parent;
056                     ul = null;
057                     //绑定键盘事件     TODO            
058                 },
059                 items: [],
060                 setValue: function (item) { },
061                 target: null
062             }
063         }, o);
064         var me = $(this);
065         var v;
066         if (options.vinputid) {
067             v = $("#" + options.vinputid);
068         }
069         if (options.selecteditem) {
070             me.val(options.selecteditem.text);
071             if (v && options.selecteditem.value) {
072                 v.val(options.selecteditem.value);
073             }
074         }
075         if (!options.editable) {
076             me.attr("readonly"true);
077         }
078  
079         me.addClass(options.cssClass).DhoverClass("hover");
080         if (!options.dropwidth) {
081             options.dropwidth = me.outerWidth();
082         }
083         var d = $("<div/>").addClass(options.containerCssClass)
084                            .css({ position: "absolute""z-index""999""overflow""auto", width: options.dropwidth, display: "none" })
085                            .click(function (event) { event.stopPropagation(); })
086                            .appendTo($("body"));
087         if (options.autoheight) {
088             d.css("max-height", options.dropheight);
089         }
090         else {
091             d.css("height", options.dropheight);
092         }
093  
094         if ($.browser.msie) {
095             if (parseFloat($.browser.version) <= 6) {
096                 var ie6hack = $("<div/>").css({ position: "absolute""z-index""-2""overflow""hidden""height""100%", width: "100%" });
097                 ie6hack.append($('<iframe style="position:absolute;z-index:-1;width:100%;height:100%;top:0;left:0;scrolling:no;" frameborder="0" src="about:blank"></iframe>'));
098                 d.append(ie6hack);
099             }
100         }
101  
102         me.click(function () {
103             var m = this;
104             if (d.attr("isinited") != "true") {
105                 options.parse.items = options.items;
106                 options.parse.selectedItem = options.selecteditem;
107                 options.parse.render(d);
108                 if (options.selecteditem) {
109                     options.parse.setValue.call(d, options.selecteditem);
110                 }
111                 d.attr("isinited""true");
112             }
113             if (d.css("display") == "none") {
114                 if (options.parse.onshow) {
115                     options.parse.onshow(d);
116                 }
117                 var pos = getDulyOffset(me, options.dropwidth, options.dropheight);
118                 d.css(pos);
119                 d.show();
120                 if ($.browser.msie) {
121                     if (parseFloat($.browser.version) <= 6) {
122                         var h = d.height();
123                         if (h > options.dropheight) {
124                             d.height(options.dropheight);
125                         }
126                     }
127                 }
128                 $(document).one("click"function (event) { d.hide(); });
129             }
130             else {
131                 $(document).click();
132             }
133             return false;
134         });
135         me.SelectedChanged = function (t) {
136             var b = true;
137             if (options.selectedchange) {
138                 b = options.selectedchange.apply(me, [t]);
139             }
140             if (b != false) {
141                 me.val(t.text);
142                 if (v && t.value) {
143                     v.val(t.value);
144                 }
145             }
146             d.hide();
147  
148         };
149         me.Invaildate = function () {
150             d.attr("isinited""false");
151         }
152         me.ExtendOption = function (o) {
153             $.extend(options, o);
154         }
155         me.Cancel = function () {
156             d.hide();
157         }
158         options.parse.target = me;
159         return me;
160     }
161  
162  
163 })(jQuery);
 

[2].[代码] html 跳至 [1] [2] [3] [4] [5] [6]

1      <input type="text" id="dplist1" name="dplist1" class="_w150"/> 
2 <input type="hidden" id="hdvalue1" name="hdvalue1"/>
 

[3].[代码] css 文件 跳至 [1] [2] [3] [4] [5] [6]

001 input.dropdown
002 {
003     border:solid 1px #b4b4b4 !important;
004     background:url("../image/plugin/dropdown/dparrow.png") no-repeat right 4px;  
005     cursor:default;
006     overflow:hidden;
007     height: 17px;
008     line-height: 17px;
009     padding: 4px 22px 4px 4px; 
010     font-size:14px;
011 }
012 input.dropdown.hover
013
014     padding-right:15;
015     background:url("../image/plugin/dropdown/dparrow.png") no-repeat right -29px;  
016 }
017 .dropdowncontainer
018 {
019     cursor:default;
020     padding:0;   
021     overflow-x:hidden !important;
022     font-size:14px;
023     border:1px solid #555;
024     background-color:#fff;
025 }
026 .dropdowncontainer ul
027 {
028     list-style: none;
029     margin: 0;
030     padding: 0;
031     border: none;
032     
033 }
034 .dropdowncontainer ul li
035 {
036     padding:2px 4px;
037     margin: 0;
038     list-style: none;
039     white-space:nowrap;
040 }
041 .dropdowncontainer ul li.hover
042 {
043     color:#fff;
044     background:#3161c5;
045 }
046 .dropdowncontainer ul li.selected
047 {
048     color:#fff;
049     background:#3161c5;
050 }
051 input.dropdown._w60
052 {
053     width:43px;
054 }
055 input.dropdown._w90
056 {
057     width:63px;
058 }
059 input.dropdown._w120
060 {
061     width:93px;
062 }
063 input.dropdown._w150
064 {
065     width:123px;
066 }
067 input.dropdown._w180
068 {
069     width:153px;
070 }
071 input.dropdown._w200
072 {
073     width:173px;
074 }
075  
076 .qtableContainer
077 {
078     padding:2px;
079     background:#dfe8f6;
080     border:#ccc solid 1px;    
081   /*  
082     box-shadow:2px 2px 4px #666;
083     -moz-box-shadow:2px 2px 4px #666;
084     -webkit-box-shadow:2px 2px 4px #666;   
085     */
086 }
087 .qtableContainer .querytainer
088 {
089     border: 1px solid #99bbe8;
090     border-bottom:none;
091     background:#fff url("../image/plugin/dropdown/tbg.gif") repeat-x left top;
092     display:block;
093     overflow:hidden;
094     text-align:right;
095     padding:2px 5px;
096 }
097 .qtableContainer .querytainer input
098 {
099     height:17px;
100     line-height:17px;  
101     padding:2px 4px;
102     margin:0px;
103     width:150px;
104     background:#fff;   
105 }
106 .qtableContainer .querytainer input.watermark
107 {
108     color:#999;
109 }
110 .qtableContainer .querytainer  a
111 {
112     margin-top:4px;
113     margin-left:-20px;
114     display:block;
115     float:left;
116     width:16px;
117     height:16px;
118     background:url("../image/plugin/dropdown/uquery.gif") no-repeat center center;
119 }
120 .qtableContainer .tablecontaienr
121 {
122     background:#fff;
123 }
124 .qtableContainer .tablecontaienr table
125 {
126     border-left: 1px solid #99bbe8;    
127      
128 }
129 .qtableContainer .tablecontaienr th
130 {
131     font-size:12px;
132     font-weight:normal;
133     color: #000;
134     border-right: 1px solid #99bbe8;
135     border-bottom: 3px double #99bbe8;
136     border-top: 1px solid #99bbe8;
137 }
138 .qtableContainer .tablecontaienr tr.hover
139 {
140     background:#FFFFBB;
141 }
142 .qtableContainer .tablecontaienr td
143 {
144     border-right: 1px solid #99bbe8;
145     border-bottom: 1px solid #99bbe8;           
146     padding:2px 0px;
147     font-size:12px;
148     text-align:center;
149     color: #333;
150 }
151 .qtableContainer .tablecontaienr th div
152 {
153     padding:4px 4px;
154     overflow:hidden;
155 }
156 .qtableContainer .tablecontaienr td div
157 {
158     padding:2px 4px;
159     overflow:hidden;
160 }
161 .qtableContainer .pagecontainer
162 {
163     padding:6px 4px 4px 0px;
164     text-align:right;
165     border: 1px solid #99bbe8;
166     border-top:none;
167     background:#fff;
168 }
169 .qtableContainer .pagecontainer a
170 {  
171     margin:2px 4px;
172     color:#1e5494;
173 }
174 .qtableContainer .pagecontainer a:hover
175 {
176     text-decoration:underline;
177 }
178 .qtableContainer .pagecontainer span
179 {
180     margin:2px 4px;
181     color:#1e5494;
182 }
183 .dtreecontainer
184 {
185     padding:2px;
186     background:#dfe8f6;
187     border:#ccc solid 1px; 
188     /*  
189     box-shadow:2px 2px 4px #666;
190     -moz-box-shadow:2px 2px 4px #666;
191     -webkit-box-shadow:2px 2px 4px #666;   
192     */
193 }
 

[4].[代码] 调用 跳至 [1] [2] [3] [4] [5] [6]

01 $("#dplist1").dropdown({ vinputid: "hdvalue1",
02            selecteditem: { text: "英国", value: "en" },
03            items: [
04                       { text: "中国", value: "china", classes: "ch" },
05                       { text: "美国", value: "us", classes: "us" },
06                       { text: "英国", value: "en", classes: "en" },
07                       { text: "日本", value: "jp", classes: "jp" },
08                       { text: "法国", value: "fr", classes: "fr" }
09                   ]
10        });
 

[5].[代码] 自定义样式 跳至 [1] [2] [3] [4] [5] [6]

01 .ch
02       {
03           padding-left20px;
04           backgroundurl("../../statics/image/flag/cn.gif"no-repeat left center;
05       }
06       .us
07       {
08           padding-left20px;
09           backgroundurl("../../statics/image/flag/us.gif"no-repeat left center;
10       }
11       .en
12       {
13           padding-left20px;
14           backgroundurl("../../statics/image/flag/en.gif"no-repeat left center;
15       }
16       .jp
17       {
18           padding-left20px;
19           backgroundurl("../../statics/image/flag/jp.gif"no-repeat left center;
20       }
21       .fr
22       {
23           padding-left20px;
24           backgroundurl("../../statics/image/flag/fr.gif"no-repeat left center;
25       }
 

[6].[图片] 123333.jpg 

分享到:
评论

相关推荐

    jquery可编辑的下拉框combox

    2. **jQuery插件**:可以使用现有的jQuery插件,如`jQuery UI ComboBox`,或者自定义一个。如果你选择自定义,需要编写JavaScript代码来处理输入框的事件(如`keyup`)和下拉列表的交互。 3. **事件绑定**:当用户...

    combox下拉树combox下拉树

    在IT行业中,`Combox`(组合框)是一种常见的用户界面元素,它结合了文本输入框和下拉列表的功能,通常用于提供用户选择一个或多个预定义的选项。当需要在下拉列表中呈现层级结构时,我们就会涉及到“Combox下拉树”...

    JQuery&CSS;&CSS;+DIV实例大全.rar

    4.JS+CSS通用一个页面同时三个焦点图轮换效果完整实例 5.JS+CSS网页版模拟QQ登录框界面特效示例 6.JS+flash立柱广告代码仿百度MP3搜索右侧可伸缩的立柱广告效果 7.JS版本黑色超动感二级菜单导航模块代码 穿越...

    可填写js combox

    - 创建自定义jQuery插件,封装上述原生JavaScript逻辑,提供简便的API供其他代码调用。 3. 在React中实现: - 创建一个React组件,组件状态包含输入值和可选选项列表。 - `render`方法中,返回输入框和下拉列表...

    jQuery EasyUI 为Combo,Combobox添加清除值功能的实例

    首先,通过jQuery的插件方式扩展combo的方法集合,增加一个名为initClear的方法,该方法用于初始化清除按钮。接着,创建一个清除按钮元素,并为其添加悬停效果和点击事件。悬停效果主要用于视觉上的反馈,通过添加和...

    jQuery EasyUI 1.4.3 API

    jQuery EasyUI 是一个基于 jQuery 的前端框架,它简化了网页用户界面开发,提供了一系列易于使用的组件,如对话框、表格、菜单、按钮等。1.4.3 版本是该框架的一个稳定版本,提供了丰富的功能和改进。下面将详细阐述...

    select combox

    在网页开发中,"select combox"通常指的是一个下拉列表选择框,它结合了HTML原生的`&lt;select&gt;`元素和自定义的JavaScript功能,以提供更丰富的交互体验和更多的定制选项。这个控件在网页设计中非常常见,用于让用户在...

    多选框Combobox

    总结来说,"多选框Combobox"是一种结合了多选框和下拉框功能的前端组件,通过jQuery插件实现,提供模糊查询、多选和单选等功能。它在设计上追求美观,功能上强调易用性和效率,是现代Web应用中不可或缺的交互元素。...

    querycombox

    "querycombox"是一个基于jQuery的下拉列表插件,旨在增强HTML的元素的功能,提供更加丰富和用户友好的交互体验。在网页开发中,下拉列表常常用于提供多选项选择,但原生的HTML下拉列表功能相对简单,无法满足复杂的...

    easyui和dwz_jui两套后台管理界面模板

    DWZ_JUI则是另一个基于jQuery的前端框架,它源于DWZ(Dynamic Web Zone)框架,提供了一整套完善的后台管理系统解决方案。DWZ_JUI强调易用性和高性能,包含丰富的组件和实用的功能,如表单验证、Ajax无刷新、数据...

    VS2008 ,vs2005 ,WEB textbox 自动完成控件

    然而,jQueryComBox可能是用于实现这一特性的jQuery插件。jQuery是一个轻量级的JavaScript库,它简化了DOM操作、事件处理和Ajax交互,使得在没有服务器端支持的情况下实现自动完成成为可能。 jQueryComBox插件可能...

    C# 带查询功能自动提示的ComBox下列框控件

    本教程将深入探讨如何在C#中实现一个带有查询功能和自动提示的ComboBox控件。 首先,我们需要理解ComboBox的基本用法。ComboBox控件结合了TextBox和DropDownList的功能,允许用户从下拉列表中选择一个选项,或者在...

    可输入可选择动态添加搜索选项.zip

    jQuery插件则是基于jQuery核心功能的扩展,提供了更丰富的功能和更便捷的API,用于增强网页的交互性和用户体验。 这个特定的"可输入可选择"插件,主要涉及到以下几个关键知识点: 1. **动态加载**:当用户开始输入...

    combox tip

    在Web开发中,HTML5的`&lt;select&gt;`元素配合JavaScript库如jQuery UI或Bootstrap的`&lt;select&gt;`插件可以实现类似功能。 `Tip`(提示)在`ComboBox`上下文中通常指的是工具提示或者提示信息。当鼠标悬停在`ComboBox`上...

    JQueryEasyUI框架下的combobox的取值和绑定的方法

    对于最近的使用中,给我的感觉就是,借用官网JqueryEasyUI上的一句话,EasyUI是基于jQuery用户界面插件的集合,我把它理解成一种插件,不知道有没有问题。而使用easyui,不需要写很多的javascript代码,只需在定义的...

    可输可选下拉框的3种实现方式

    首先,你需要在HTML文件中引入jQuery库,然后创建一个组合输入框,包含一个下拉框和一个输入框。`combox`函数负责初始化并绑定事件,如`keydown`事件用于处理简码查找,`change`事件用于同步下拉框和输入框的值。在...

    combobox控件

    ZTree是一个JavaScript实现的树形插件,它可以用于展示层次结构的数据,如文件系统、组织结构等。将ZTree集成到ComboBox中,可以创建一种具有树状结构的下拉选项,用户可以展开节点来浏览和选择深层次的项目。 ...

    Combobox的智能提示

    在JavaScript中,可以利用jQuery UI的Autocomplete插件;在HTML5中,可以使用`&lt;datalist&gt;`标签配合`input`元素的`list`属性。 为了提供更好的性能和用户体验,还可以考虑以下优化策略: - **异步加载**:对于大...

    DWZ——国内一款开源框架(JUI)

    DWZ文档中还详细记录了一些常见的问题及其解决办法,例如如何在DWZ中集成第三方jQuery插件、解决兼容性问题等,这些都是开发者在实际应用过程中可能会遇到的问题,通过查阅文档可以获得相应的解决方案。 综上所述,...

Global site tag (gtag.js) - Google Analytics