- 浏览: 232138 次
- 性别:
- 来自: 北京
文章分类
最新评论
jQuery ui 是一个UI的雏形, 一些UI都基于jQuery ui 开发,例如easy ui。
最近项目用jquery ui 做前台,需要用到 combobox组件, 如果用easy ui 需要引入很多其他的js比较麻烦, jquery ui Demo中 autocomplete 里面自带一个Combobox, 但一些功能不是我们想要的。
自己在上面增加了几个方法和事件。 并修改了对IE6支持的CSS 如下:
好处: 下拉框的样式随jquery ui 的样式改变而改变, 支持自动补全
不足: 方法需要自己扩展
————————————————————————————————————————
参数:
tip: "提示",
isReadonly: true, //默认下拉框值不可编辑, 如果设置为false, 那么下拉框支持自动补全
增加方法说明:
事件:
1.onChange: 当下拉框修改选中一条时候触发
方法:
主动设置下拉框内容
1.$( "#combobox" ).combobox('setSelect', 'option中value', 'option中text');
————————————————————————————————————————
测试:
Html: <select id="combobox"> ... </select> 依赖: jquery ui 为1.9.1 需要依赖jquery ui、 jquery <link rel="stylesheet" type="text/css" href="jquery/jqueryui/css/redmond/jquery-ui.custom.min.css" /> <link rel="stylesheet" type="text/css" href="jquery/jqueryui/combobox/jquery.combobox.css" /> <script src="jquery/jquery.min.js" type="text/javascript"></script> <script src="jquery/jqueryui/js/jquery-ui.custom.min.js" type="text/javascript"></script> <script src="jquery/jqueryui/combobox/jquery.combobox.js" type="text/javascript"></script> $( "#combobox" ).combobox({ tip: "鼠标划入下拉按钮时候会有提示!", onChange: function(option){ alert($(option).attr('value')); } });
(function( $ ) { $.widget( "ui.combobox", { version: "1.9.1", options: { tip: "", isReadonly: true, /** * This event fire after selected select. */ onChange: function(option) {} }, input: null, _create: function() { var that = this, select = this.element.hide(), selected = select.children( ":selected" ), value = selected.val() ? selected.text() : "", wrapper = this.wrapper = $( "<span>" ) .addClass( "ui-combobox" ) .insertAfter( select ); function removeIfInvalid(element) { var value = $( element ).val(), matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( value ) + "$", "i" ), valid = false; select.children( "option" ).each(function() { if ( $( this ).text().match( matcher ) ) { this.selected = valid = true; return false; } }); if ( !valid ) { // remove invalid value, as it didn't match anything $( element ) .val( "" ) .attr( "title", value + " 没有匹配结果!" ) .tooltip( "open" ); select.val( "" ); setTimeout(function() { input.tooltip( "close" ).attr( "title", "" ); }, 2500 ); input.data( "autocomplete" ).term = ""; return false; } } input = $( "<input>" ) .appendTo( wrapper ) .val( value ) .attr( "title", "" ) // .addClass( "ui-state-default ui-combobox-input" ) .addClass( "ui-combobox-input" ) .autocomplete({ delay: 0, minLength: 0, source: function( request, response ) { var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" ); response( select.children( "option" ).map(function() { var text = $( this ).text(); if ( this.value && ( !request.term || matcher.test(text) ) ) return { label: text.replace( new RegExp( "(?![^&;]+;)(?!<[^<>]*)(" + $.ui.autocomplete.escapeRegex(request.term) + ")(?![^<>]*>)(?![^&;]+;)", "gi" ), "<strong>$1</strong>" ), value: text, option: this }; }) ); }, select: function( event, ui ) { ui.item.option.selected = true; that._trigger( "selected", event, { item: ui.item.option }); that.options.onChange(ui.item.option); }, change: function( event, ui ) { if ( !ui.item ) return removeIfInvalid( this ); } }) .addClass( "ui-widget ui-widget-content ui-corner-left" ); input.data( "autocomplete" )._renderItem = function( ul, item ) { return $( "<li>" ) .data( "item.autocomplete", item ) .append( "<a>" + item.label + "</a>" ) .appendTo( ul ); }; $( "<a>" ) .attr( "tabIndex", -1 ) .attr( "title", this.options.tip ) .tooltip() .appendTo( wrapper ) .button({ icons: { primary: "ui-icon-triangle-1-s" }, text: false }) //移除 // .removeClass( "ui-button" ) .removeClass( "ui-corner-all" ) .addClass( "ui-corner-right ui-combobox-toggle" ) .click(function() { // close if already visible if ( input.autocomplete( "widget" ).is( ":visible" ) ) { input.autocomplete( "close" ); removeIfInvalid( input ); return; } // work around a bug (likely same cause as #5265) $( this ).blur(); // pass empty string as value to search for, displaying all results input.autocomplete( "search", "" ); input.focus(); }); input .tooltip({ position: { of: this.button }, tooltipClass: "ui-state-highlight" }); if (this.options.isReadonly) { input.attr('readonly', true); } }, destroy: function() { this.wrapper.remove(); this.element.show(); $.Widget.prototype.destroy.call( this ); }, /** * Set input value * @param value option's value * @param text option's text */ setSelect: function(value, text) { input.val(text); } }); })( jQuery );
CSS
.ui-combobox { position: relative; display: inline-block; padding-right: 20px; } .ui-combobox-toggle { position: absolute; top: 0; bottom: 0; margin-left: -1px; padding: 0 0 0 0; /* adjust styles for IE 6/7 */ *height: 16px; *top: 0.1em; PADDING-RIGHT: 0px; width: 20px; } .ui-combobox-input { margin: 0; padding: 0em; width: 120px; }
发表评论
-
web界面父子页面互相调用
2017-10-27 14:25 635父页面:parent.html <!DOCT ... -
多选下拉框的回显(Select)
2015-10-20 17:29 10478多选下拉框打印时候是已数组形式展现的,按这种思路: &l ... -
jqgrid 网址
2015-05-13 16:41 583http://www.trirand.com/blog/jqg ... -
JQuery EasyUI combobox动态添加option
2015-03-20 09:41 1767<input class="easyui-c ... -
easy datagrid 获得page信息
2015-02-03 11:07 650var grid = $('#datagrid'); va ... -
easy ui datagrid api
2015-01-29 12:58 717http://www.jeasyui.com/document ... -
扩展easy ui tree 层级(level)
2014-12-22 10:38 872$.extend($.fn.tree.methods, { ... -
jquery 下拉框按text 选中
2014-11-18 16:03 542jQuery("#separator option[ ... -
jqGrid增加滚动条
2014-10-28 10:15 1960滚动条: $(xxx).jqGrid({ ...... aut ... -
jQuery ui 多选下拉
2014-09-25 11:49 1029下载及代码:http://www.erichynds.com/ ... -
jqGrid 行编辑(select事件)动态追加控件(操作)
2014-09-15 11:26 7479在某个控件后面, 追加一个控件, 在某个控件下面设置 ... -
jQuery validate 自定义样式、规则
2014-09-12 17:07 1510jquery validate 常用的找Api 就好, 但有一 ... -
jqGrid自动适应窗口大小
2014-09-01 17:41 809$(window).resize(function(){ ... -
jqGrid 编辑自定义控件
2014-08-15 16:12 2415jqGrid 支持在某一列上,自己写一个控件显示,并影响弹出编 ... -
Ztree 常用
2014-08-14 17:36 1138Ztree 支持中文API 实在太easy 了, 有了API ... -
针对Ztree的右键弹出菜单(jquery.popupSmallMenu.js)
2014-08-14 10:21 6470例子效果: 右键菜单方便好用的有很多,长用的为jque ... -
jquery ui Message 简单使用
2014-08-12 10:09 1265可以自己在前面加上一张图片 通过operation判断 用哪张 ... -
jQuery layout 插件属性
2014-07-30 16:08 1662相信很多人在用layout的时候都会找layout到底有多少属 ... -
jqGrid 两种列模型(TypeError: b is undefined)
2014-07-23 18:06 1063jqGrid 的json支持两种列模型 1:如果用普通的js ... -
BS UI
2014-07-21 16:07 383http://www.bootcss.com/ 支持IE6 ...
相关推荐
**jQuery Combobox 扩展详解** jQuery Combobox 是一个基于 jQuery UI 的插件,它将传统的下拉选择框(select)与自动补全(autocomplete)功能结合在一起,为用户提供更友好的交互体验。这个扩展在2011年7月30日...
虽然jQuery ComboBox 是基于jQuery UI的,但请注意并非所有版本的jQuery UI都包含此组件。确保使用的jQuery UI版本包含ComboBox插件。此外,测试其在不同浏览器和设备上的兼容性,以确保用户体验的一致性。 总的来...
**jQuery UI超级组合框**是一种基于JavaScript库jQuery UI的组件,它扩展了传统的HTML `<select>`元素的功能,提供了更丰富的用户体验。此组件不仅提供了一般的下拉选择功能,还允许用户自由输入文本,增强了交互性...
`jQuery Combobox` 虽然简单易用,但它的功能可以进一步扩展。例如,你可以通过修改源码或使用 jQuery 插件机制实现自定义的行为,如添加分组、异步加载数据、支持多选等。同时,利用 jQuery 的插件机制,你可以方便...
- **jQuery ComboBox**: 创建可搜索的下拉列表。 - **jQuery controlled dependent (or Cascading) Select List**: 支持多级联动选择。 - **Multiple Selects**: 支持多选下拉列表。 - **Select box ...
jQuery库提供了许多优秀的插件来实现Combobox功能,例如`jQuery UI Combobox`。这个插件是基于`Select`元素构建的,通过CSS和JavaScript对其进行增强,实现自动补全和模糊搜索。开发者只需要将普通的HTML Select...
jQuery EasyUI 是一个轻量级的前端框架,它基于 jQuery 并提供了大量的预定义的 UI 组件,如表格(datagrid)、下拉树(combobox)、菜单(menu)等,帮助开发者快速构建用户界面。`jQuery_EasyUI_1.2_API 文档.rar`...
jQuery UI则是一款更为通用的前端库,它扩展了jQuery的功能,提供了一系列可自定义的交互式UI组件,如日期选择器(datepicker)、拖放(draggable)、堆叠排序(sortable)等。jQuery UI的主要特点包括: 1. **组件...
在前端开发中,EasyUI 是一个基于 jQuery 的 UI 框架,它提供了一系列美观、易用的组件,用于构建用户界面。在这个实例中,我们将深入探讨 EasyUI 中的两个重要组件:`easyui-textbox` 和 `easyui-combobox`,以及...
以上只是 LigerUI 部分组件及功能的简要介绍,实际使用中还有更多高级特性和定制选项,如数据缓存、自定义模板、插件扩展等。建议开发者深入阅读官方提供的中文帮助文档,以便更全面地了解和掌握 LigerUI。在实践中...
《jQuery ligerUI 帮助文档》是一个专注于jQuery库扩展的详细指南,它为开发者提供了丰富的组件和功能,使得JavaScript编程更为便捷。ligerUI是基于jQuery的一个强大的用户界面库,它集成了多种控件,如表格、下拉框...
jQuery EasyUI提供了一套丰富的UI组件库,其中Combo和Combobox组件主要用于数据的输入和选择。在本实例中,通过自定义的方法,为这些组件增加了一个“清除”按钮,让用户能够快速清除已选择的值。 知识点一:jQuery...
1. **组件丰富**:jQuery ligerUI 提供了诸如表格(Grid)、对话框(Dialog)、表单(Form)、树形视图(Tree)、下拉列表(ComboBox)、日期选择器(DateBox)等控件,满足多样化的需求。 2. **易于使用**:liger...
- 自定义插件:了解如何扩展jQuery,创建自定义的UI组件。 - CSS布局和美化:使用CSS调整Combobox的样式,使其具有与ExtJS类似的外观。 - 键盘导航和访问性:支持键盘操作,提高组件的无障碍性。 - 兼容性和优化:...
根据给出的内容,我们可以了解到关于jQuery EasyUI Combobox组件的模糊过滤功能以及扩展方法的实现。在深入探讨之前,让我们先了解一下jQuery EasyUI是什么,以及Combobox组件的作用。 jQuery EasyUI是一个基于...
jQuery Combobox是一款经过精心设计和优化的UI组件,它将下拉列表(Select)与输入框(Input)的功能相结合,提供了一种美观且用户友好的选择项交互方式。这款插件在jQuery的基础上进行扩展,使得在网页应用中实现...
2. **组件丰富**:LigerUI提供了众多UI组件,如表格(Grid)、表单(Form)、下拉框(ComboBox)、日期选择器(DatePicker)、对话框(Dialog)、分页(Pager)等,这些都是构建复杂Web应用的必备工具。 3. **主题...
2. 下拉框(ComboBox):LigerUI的下拉框组件不仅具备基本的选择功能,还支持异步加载数据,可实现智能搜索,提升用户体验。 3. 对话框(Dialog):对话框组件提供了模态和非模态两种模式,支持自定义大小、位置和...