输入框模糊搜索(加自定义按钮)

    技术2023-05-20  72

    //输入框keyup事件 function loadInputSearch(targetDom,items) { //输入框获取焦点 $(targetDom).focus(function () { if($(targetDom) == ''){ var searchResult = items; loadInputDrop(targetDom,searchResult,items); }else{ var inputWords = $(targetDom).val(); var inputWordsArray = $.trim(inputWords).split(/\s+/); var searchResult = items; $.each(inputWordsArray,function (i, item) { searchResult=$.grep(searchResult, function(n, i){return n.toLowerCase().indexOf(item.toLowerCase())!=-1;}); }) loadInputDrop(targetDom,searchResult,items) } }) //输入框键入 $(targetDom).keyup(function () { var inputWords = $(targetDom).val(); var inputWordsArray = $.trim(inputWords).split(/\s+/); var searchResult = items; $.each(inputWordsArray,function (i, item) { searchResult=$.grep(searchResult, function(n, i){return n.toLowerCase().indexOf(item.toLowerCase())!=-1;}); }) // console.log(searchResult); loadInputDrop(targetDom,searchResult,items) }) } //加载搜索下拉框 function loadInputDrop(targetDom,searchResult,items) { var dropBox = '<div id="dropbox"><ul id="searchList"></ul></div>' $("#dropbox").remove() $(targetDom).parent().append(dropBox) $("#dropbox ul").append('<li class="dropline" id="dropcustom">自定义</li>') for(var i = 0; i < searchResult.length; i++){ $("#dropbox ul").append('<li class="dropline1">'+searchResult[i]+'</li>'); if(i>100) break } $(".dropline1").hover(function(){ $(this).css("background-color","lightblue"); },function(){ $(this).css("background-color","white"); }); $(".dropline1").mousedown(function(){ $(targetDom).val($(this).text()) $("#dropbox").hide() }) $("#dropcustom").unbind("mousedown").bind("mousedown",function () { var index = layer.open({ type: 1, skin: "layui-layer-rim", area: ["550px", 'auto'], title: "自定义", content: '<div style="margin-left: 20px">请输入自定义名称:<input type="text" id="setName" style="margin-top: 20px;"/></div>', btn: ['确定', '取消'], shadeClose:true, yes: function (index, layero) { var customName = $.trim($("#setName").val()); if(customName == ''){ layer.alert('自定义名称不能为空!'); }else{ $(targetDom).val(customName) $("#dropbox").hide() items.push(customName) } layer.close(index); }, btn2: function (index, layero) { //取消按钮后的处理函数 layer.close(index); }, }); }) //输入框失去焦点 $(targetDom).unbind("blur").bind("blur",function () { // console.log($(targetDom).val()); if(searchResult.indexOf($(targetDom).val()) == -1){ $(targetDom).val('') } $("#dropbox").hide() }) }

    涉及到的问题:输入框失焦事件与按钮点击事件冲突的问题 解决办法:将按钮的点击(click)事件改为按下(mousedown)事件

    原代码:

    $(".dropline1").click(function(){ $(targetDom).val($(this).text()) $("#dropbox").hide() }) $("#dropcustom").unbind("click").bind("click",function () css: #dropbox{ border:#ccc solid 1px; border-top: transparent; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; max-height: 150px; overflow:auto; z-index: 100; position: absolute; background-color: white; width: 90%; }
    Processed: 0.009, SQL: 9