JS——下拉搜索列表(模糊搜索匹配)

<script type="text/javascript"> 
		var datas = [
			{name:"总部管理支持部门",code:"0000-0001"},
			{name:"董事会秘书局",code:"0000-0001-0002"},
			{name:"总裁办公室",code:"0000-0001-0003"},
			{name:"规划发展部",code:"0000-0001-0004"},
			{name:"人力资源部",code:"0000-0001-0005"},
			{name:"财务部",code:"0000-0001-0006"}
		];//定义数据	

		/**
		* 搜索下拉列表
		**/
		$('#testInput').bind('input propertychange',
			function() {
				var items = inputChange();//搜索数据并获取搜索结果
				if(items != undefined){
					_initItems(items);
			}
			
        });


		//1:搜索数据
		var inputChange = function() {
            var inputValue = $('#testInput').val();
			
			if(inputValue != "" && inputValue.indexOf("000") == -1){
				var matcher = new RegExp(inputValue, "i");
				return $.grep(datas,
					function(value) {
					return matcher.test(value.name);
				});
			}else if(inputValue != "" && inputValue.indexOf("000") != -1){
				var matcher = new RegExp(inputValue, "i");
				return $.grep(datas,
					function(value) {
					return matcher.test(value.code);
				});
			}
            
        };
        var maxFontNumber = 0;//最大字数
		var suggestContainer = $('<div></div>'); //创建一个子<div>
		suggestContainer.attr('id', "testInput-suggest");
        suggestContainer.attr('tabindex', '0');
        suggestContainer.hide();
				
		//2:初始化搜索到的数据进行显示
		var _initItems = function(items) {
			$('#ruleOrgCode').val("");
            suggestContainer.empty();
            for (var i = 0; i < items.length; i++) {
            	if(items[i].name.length > maxFontNumber){
         			maxFontNumber = items[i].name.length;
       			}
				var suggestItem = $('<div></div>'); //创建一个子<div>
                suggestItem.attr('code', items[i].code);
                suggestItem.append(items[i].name);
                suggestItem.css({
                	'padding':'3px',//item间距
                    'white-space':'nowrap',
                    'cursor': 'pointer',
                    'background-color': 'RGB(199,237,204)',//默认背景颜色
                    'color': '#000000'//默认字体颜色
                });
                suggestItem.bind("mouseover",
                function() {
                    $(this).css({
                        'background-color': '#C9302C',//选中背景颜色
                        'color': '#ffffff'//选中字体颜色
                    });
                });
                suggestItem.bind("mouseout",
                function() {
                    $(this).css({
                        'background-color': 'RGB(199,237,204)',//默认背景颜色
                        'color': '#000000'//默认字体颜色
                    });
                });
                suggestItem.bind("click", showClickTextFunction);//选中后处理数据
                //suggestItem.bind("click", itemSelectFunction);
                suggestItem.appendTo(suggestContainer);
                suggestContainer.appendTo(document.body);
            }
            suggestContainer.removeAttr("style");
			suggestContainer.css({
                'border': '1px solid #ccc',
                'max-height': '200px',
                'top': $('#testInput').offset().top + $('#testInput').outerHeight(),
                'left': $('#testInput').offset().left,
                'width': 12*maxFontNumber + 2 * 3 + 30,
                'position': 'absolute',
                'font-size': '12px' ,//默认字体大小
                'font-family':'Arial',
                'z-index': 99999,
                'background-color': '#FFFFFF',
                'overflow-y': 'auto',
                'overflow-x': 'hidden',
                'white-space':'nowrap'

            });
            maxFontNumber = 0;
			suggestContainer.show();
        };
		
		//3.选中后处理数据
		var showClickTextFunction = function() {
			//alert(this.innerText + "---" + this.getAttribute("code"));
            $('#testInput').val(this.innerText);
            $('#ruleOrgCode').val(this.getAttribute("code"));
            suggestContainer.hide();
        };
		
		
  	</script>



<body>
    <div>
		<input type="text" id="testInput" />
		<input type="hide" id="ruleOrgCode" />
	</div>
 </body>


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值