记录-前端带搜索功能的选择空间
来源:互联网 发布:在家里赚钱 知乎 编辑:程序博客网 时间:2024/05/21 17:45
(function($) {$.getSelectorValue = function(target){return $('#xyt_selector_' + target).val();} $.selectSuggest = function(target, data, itemSelectFunction) { var defaulOption = { suggestMaxHeight: '200px',//弹出框最大高度 itemColor : '#000000',//默认字体颜色 itemBackgroundColor:'RGB(199,237,204)',//默认背景颜色 itemOverColor : '#ffffff',//选中字体颜色 itemOverBackgroundColor : '#C9302C',//选中背景颜色 itemPadding : 3 ,//item间距 fontSize : 12 ,//默认字体大小 alwaysShowALL : true //点击input是否展示所有可选项 }; var maxFontNumber = 0;//最大字数 var currentItem; var suggestContainerId = target + "-suggest"; var suggestContainerWidth = $('#' + target).innerWidth(); var suggestContainerLeft = $('#' + target).offset().left; var suggestContainerTop = $('#' + target).offset().top + $('#' + target).outerHeight();$(document.body).append("<input id='xyt_selector_"+target+"' type='hidden' values='-1'/>"); var showClickTextFunction = function() { $('#' + target).val(this.innerText);$('#xyt_selector_' + target).val(this.id); currentItem = null; $('#' + suggestContainerId).hide(); } var suggestContainer; if ($('#' + suggestContainerId)[0]) { suggestContainer = $('#' + suggestContainerId); suggestContainer.empty(); } else { suggestContainer = $('<div></div>'); //创建一个子<div> } suggestContainer.attr('id', suggestContainerId); suggestContainer.attr('tabindex', '0'); suggestContainer.hide(); var _initItems = function(items) { suggestContainer.empty();if(!items || items.length==0)return; for (var i = 0; i < items.length; i++) { if(items[i].text.length > maxFontNumber){ maxFontNumber = items[i].text.length; }if(items[i].defaultValue==true){$('#xyt_selector_' + target).val(items[i].id);$('#'+target).val(items[i].text);items[i].defaultValue=false;} var suggestItem = $('<div></div>'); //创建一个子<div> suggestItem.attr('id', items[i].id); suggestItem.append(items[i].text); suggestItem.css({ 'padding':defaulOption.itemPadding + 'px', 'white-space':'nowrap', 'cursor': 'pointer', 'background-color': defaulOption.itemBackgroundColor, 'color': defaulOption.itemColor,'z-index':19891019 }); suggestItem.bind("mouseover", function() { $(this).css({ 'background-color': defaulOption.itemOverBackgroundColor, 'color': defaulOption.itemOverColor }); currentItem = $(this); }); suggestItem.bind("mouseout", function() { $(this).css({ 'background-color': defaulOption.itemBackgroundColor, 'color': defaulOption.itemColor }); currentItem = null; }); suggestItem.bind("click", showClickTextFunction); suggestItem.bind("click", itemSelectFunction); suggestItem.appendTo(suggestContainer); suggestContainer.appendTo(document.body); } } var inputChange = function() { var inputValue = $('#' + target).val();if(!inputValue){$('#xyt_selector_' + target).val("-1");return;} inputValue = inputValue.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&"); var matcher = new RegExp(inputValue, "i"); return $.grep(data, function(value) { return matcher.test(value.text); }); }if (!!window.ActiveXObject || "ActiveXObject" in window){$('#' + target).bind("propertychange",function() {_initItems(inputChange());});}else{$('#' + target).bind("input",function() {_initItems(inputChange());});} $('#' + target).bind("blur", function() { if(!$('#' + suggestContainerId).is(":focus")){ $('#' + suggestContainerId).hide(); if (currentItem) { currentItem.trigger("click"); } currentItem = null; return; } }); $('#' + target).bind("click", function() { if (defaulOption.alwaysShowALL) { _initItems(data); } else { _initItems(inputChange()); } $('#' + suggestContainerId).removeAttr("style"); var tempWidth = defaulOption.fontSize*maxFontNumber + 2 * defaulOption.itemPadding + 30; var containerWidth = Math.max(tempWidth, suggestContainerWidth); $('#' + suggestContainerId).css({ 'border': '1px solid #ccc', 'max-height': '200px', 'top': suggestContainerTop, 'left': suggestContainerLeft, 'width': containerWidth, 'position': 'absolute', 'font-size': defaulOption.fontSize+'px', 'font-family':'Arial', 'z-index': 99999, 'background-color': '#FFFFFF', 'overflow-y': 'auto', 'overflow-x': 'hidden', 'white-space':'nowrap' }); $('#' + suggestContainerId).show(); }); _initItems(data); $('#' + suggestContainerId).bind("blur", function() { $('#' + suggestContainerId).hide(); }); }})(jQuery);
使用方式
初始化数据
$.selectSuggest('inputId',[{id:1,text:'test1',defaultValue:true},{id:2,text:'test2'},{id:3,text:'test3'}]);
获得选中数据
$.getSelectorValue("inputId");
阅读全文
0 0
- 记录-前端带搜索功能的选择空间
- 带搜索功能的下拉选择框select2
- 带搜索框选择的下拉列表
- 带搜索功能的GridView控件
- 带搜索功能的GridView控件
- 带分页功能的周边晚点搜索
- 带搜索功能的下拉框select
- 带搜索功能的下拉框
- 带新建文件夹功能的文件夹选择
- 前端实时搜索功能
- Bootstrap选择下拉框的搜索功能
- 【记录】【总结】搜索功能
- 系统自带的搜索控制器和自己封装的带搜索记录的控制器
- ztree 带搜索框的 下拉选择树
- Jquery的pagination前端分页技术,带查询功能
- 可输入的下拉列表(带搜索功能)
- 【新闻】Google 推出带搜索功能的三维全球地图
- Swinghacks——带搜索功能的JTextArea
- MapReduce计算模型的深入剖析
- Android中通过代码修改bitmap的宽高.
- Java面经 面试经验 互联网公司面试经验 后端面试经验
- 铺瓷砖(下楼梯)问题_递归思想
- 我在CSDN的第一篇博客
- 记录-前端带搜索功能的选择空间
- 数位dp汇总
- 体验升级,阿里云过保迁移不变公网IP
- 用SpringMVC开发RESTful风格API接口
- Android调整屏幕亮度和改变屏幕亮度调整模式的代码
- stm32 SPI-FLASH W25Q64
- POJ1279Art Gallery
- css中样式属性的获取
- c#调试