純js程式碼實作可搜尋選擇下拉列表方法
本文主要為大家分享一個純js程式碼產生可搜尋選擇下拉清單的實例,具有很好的參考價值,希望對大家有幫助。一起跟著小編過來看看吧,希望能幫助大家。
1、因為動態的css樓主寫不出來,因此需要引入layui中的css樣式:
<link rel="stylesheet" href="${ctxStatic}/layui/css/layui.css" rel="external nofollow" rel="external nofollow" >;
2、需要引入jquery-1.8.3.js版本的jquery
話不多說,程式碼實作如下:
var selectData={};//下拉列表总数据 /** * 下拉搜索,多选择等 */ $.fn.selectDataFun=function (json) { selectData[$(this).attr("id")]={thisDom:null,initData:null,jsonData:null,htmlText:null, isShow:true,selectElements:true,overStat:true,checkedElementIds:''}; thisSelectFun($(this)).thisDom=$(this);//设置索引为id,值为本身对象 thisSelectFun($(this)).initData=json;//初始数据为json /* var isShow=true;//是否显示 var selectElements;//选择的选项 var overStat=true;//鼠标经过的状态 var checkedElementIds='';//选中项的id*/ //根据字段生成html代码 setFieldTypeFun($(this)); //请求后台数据 getSelectDataFun($(this)); //生成下拉列表 thisSelectFun($(this)).htmlText = createSelectFun($(this));//htmlText为缓存的html代码 //调用总方法 callMethodFun($(this)); } //根据对象id值获取对象数据 function thisSelectFun(thisD) { if(thisD.attr("id")==''){ alert("id值为空"); return null; } return selectData[thisD.attr("id")] } //根据对象字段生成html代码 function setFieldTypeFun(thisD){ var thisId=thisD.attr("id"); var fields = selectData[thisId].initData;//以id获取该对象的所有数据 //生成html代码 var title=fields.title; var inputId=fields.inputId; var selectHtml='<p class="layui-form-select">'+'<p class="layui-select-title">'+ '<input type="hidden" id="'+inputId+'" name="'+inputId+'" />'+ '<span>'+title+':</span>'+' '+'<input id="'+thisD.attr("id")+'Search" value="" hiddenValue="" class="form-control input-sm" type="text">'+ '<i class="layui-edge"></i>'+'</p>'+'<dl class="layui-anim layui-anim-upbit" id="'+thisD.attr("id")+'dl" style=""></dl>'+ '</p>'; thisD.append(selectHtml); } //请求后台数据 function getSelectDataFun(thisD) { var fields = selectData[thisD.attr("id")].initData;//以id获取该对象的所有数据 //判断数据ajaxUrl中是否含有url字段 if(fields.ajaxUrl.hasOwnProperty('url')){ //以请求路径为url请求后台数据,并赋值给jsonData thisSelectFun(thisD).jsonData=ajaxFunss(fields.ajaxUrl); }else { if($.isEmptyObject(thisSelectFun(thisD).jsonData)){ thisSelectFun(thisD).jsonData={ code: 0, msg: "获取成功", count: 0,data:new Array()}; } } } //请求后台数据 function ajaxFunss(json) { json['async']=false; json['dataType']='json'; json['type']='post'; var layerLoadIndex = layer.load(1); //换了种风格 var resultData=$.ajax(json);//发送请求 layer.close(layerLoadIndex); if(resultData.status==200){//请求后台数据成功 return resultData.responseJSON; }else { return null; } } //生成下拉列表 function createSelectFun(thisD) { var json=thisSelectFun(thisD).jsonData; var html=''; for(var n in json){ html+='<dd lay-value="'+json[n].id+'" class="">'+json[n].name+'</dd>'; } var id=thisD.attr("id")+'dl'; $("#"+id).append(html); return html; } //调用总方法 function callMethodFun(thisD) { var iDom=thisD.find(".layui-edge").eq(0);//i元素,eq为等于的意思 var pDom = thisD.find(".layui-form-select").eq(0);//下拉列表所在的p /* var isShow = thisSelectFun(thisD).isShow;//是否显示 var selectElement = thisSelectFun(thisD).selectElements;//选中的选项 var overStat = thisSelectFun(thisD).overStat;//鼠标经过和离开状态 var checkedElementIds = thisSelectFun(thisD).checkedElementIds;//隐藏输入框的value值*/ //小三角符号绑定点击方法 iDom.click(function () { if(thisSelectFun(thisD).isShow){ thisSelectFun(thisD).isShow=false; pDom.addClass("layui-form-selected");//显示下拉列表 }else { thisSelectFun(thisD).isShow=true; pDom.attr("class","layui-form-select");//隐藏下拉列表 } }); //dl元素绑定点击方法 var dlDom=thisD.find("dl").eq(0); var searchId = thisD.attr("id")+'Search';//搜索框id dlDom.on("click",'dd',function () { if(thisSelectFun(thisD).initData.selectType) { //多选 if (thisSelectFun(thisD).selectElements) { thisSelectFun(thisD).selectElements = false; $(this).addClass("layui-this");//设置勾选状态 var text = $("#" + searchId).val();//输入框的内容 var selectText = $(this).text() + ",";//选择的选项 var checkedId = $(this).attr("lay-value") + ",";//获取选项的id if (text.indexOf(selectText) != -1) {//判断输入框中的内容是否包含有所选的选项 return; } thisSelectFun(thisD).checkedElementIds += checkedId; $("#" + searchId).val(text + selectText); } else { thisSelectFun(thisD).selectElements = true; $(this).attr("class", "");//清空勾选状态 var val = $(this).text() + ",";//勾选的选项 var checkedId = $(this).attr("lay-value") + ',';//获取选项的id var text = $("#" + searchId).val().replace(val, "");//清除勾选的选项 $("#" + searchId).val(text);//设置 thisSelectFun(thisD).checkedElementIds = thisSelectFun(thisD).checkedElementIds.replace(checkedId, "");//清除勾选的选项 } }else { //单选 //获取已经选中的选项,并清除 var ddDom=thisD.find(".layui-this").eq(0); ddDom.attr("class","");//清除 $(this).addClass("layui-this");//设置勾选状态 var selectText = $(this).text();//选择的选项 var checkedId = $(this).attr("lay-value");//获取选项的id thisSelectFun(thisD).checkedElementIds = checkedId; $("#" + searchId).val(selectText); pDom.attr("class","layui-form-select");//隐藏下拉列表 } var hiddenId=selectData[thisD.attr("id")].initData.inputId;//隐藏输入框id $("#"+hiddenId).val(thisSelectFun(thisD).checkedElementIds.substring(0,thisSelectFun(thisD).checkedElementIds.length-1)); }) //鼠标经过时 dlDom.mouseover(function () { thisSelectFun(thisD).overStat=false; }); //鼠标离开时 dlDom.mouseout(function () { thisSelectFun(thisD).overStat=true; }); //鼠标松开时 $("body").mouseup(function () { if(thisSelectFun(thisD).overStat==true){//并且overStat为true pDom.attr("class","layui-form-select");//隐藏下拉列表 } }); //搜索框键盘松开事件 var searchDom = thisD.find("#"+searchId).eq(0);//搜索框对象 searchDom.keyup(function () { searchFunssss(thisD,searchId,pDom,dlDom); }); } //根据输入内容搜索出匹配的选项 function searchFunssss(thisD,searchId,pDom,dlDom) { var val=$("#"+searchId).val();//搜索框id if(val.length>0){ var conText='';//符合条件的选项 var searchStats=false;//是否搜索到 var htmlText=thisSelectFun(thisD).htmlText;//缓存的html代码 dlDom.children().each(function () { var thisText=$(this).text(); var thisDom='<dd lay-value="'+$(this).attr("lay-value")+'" class="">'+thisText+'</dd>'; if(val==thisText){ conText+=thisDom; htmlText=htmlText.replace(thisDom,""); searchStats=true; var searchId = thisD.attr("id")+'Search';//搜索框id $("#"+searchId).val("");//清空搜索框 } }); htmlText=conText+htmlText; dlDom.children().remove();//删除其子节点 dlDom.append(htmlText); if(searchStats){ pDom.addClass("layui-form-selected");//显示下拉列表 } } }
以上js程式碼放在名稱為selectFun.js的js檔案中
呼叫如下:
<%@ page contentType="text/html;charset=UTF-8" %> <%@ include file="/webpage/include/taglib.jsp"%> <html> <head> <title>test</title> <meta name="decorator" content="default"/> <link rel="stylesheet" href="${ctxStatic}/layui/css/layui.css" rel="external nofollow" rel="external nofollow" > <script src="${ctxStatic}/selectFun.js" charset="utf-8"></script> <script type="text/javascript"> $(document).ready(function() { $("#busgatep").selectDataFun({ ajaxUrl:{url:'${ctx}/goods/goods/getStat',where:{}},//请求后台数据的路径 selectType:true,//true多选,false单选 title:'商品状态',//字段中文名称 inputId:'busgate'//实体类字段 }); $("#sortp").selectDataFun({ ajaxUrl:{url:'${ctx}/goods/goods/getSortname',where:{}}, selectType:true, title:'商品大类', inputId:'sort' }); }); </script> </head> <body class="gray-bg"> <p class="row"> <p class="col-sm-12"> <form:form id="searchForm" modelAttribute="goods" action="${ctx}/goods/goods/dataListFun" method="post" class="form-inline"> <p class="form-group"> <span>商品名称:</span> <form:input path="name" htmlEscape="false" maxlength="80" class=" form-control input-sm"/> <span>商品代码:</span> <form:input path="code" htmlEscape="false" maxlength="80" class=" form-control input-sm"/> <span>商品条码:</span> <form:input path="code2" htmlEscape="false" maxlength="30" class=" form-control input-sm"/> </p> <br/><br/> <p class="form-group"> <p class="layui-inline" id="sortp"> </p> <p class="layui-inline" id="busgatep"> </p </p> </form:form> <br/> </p> </p> </body> </html>
相關推薦:
以上是純js程式碼實作可搜尋選擇下拉列表方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

請問Wallpaper是否支持家庭共享呢?很遺憾,不能支持哦。儘管如此,我們仍有解決方案。例如,可以用小號購買或先由大號下載好軟體和壁紙,然後再更換到小號。簡單啟動軟體是完全沒問題的。 wallpaperengine能家庭共享嗎答:Wallpaper暫不支援家庭共享功能。 1.據了解,WallpaperEngine似乎不適合家庭共享環境。 2.為了解決這個困擾,建議您考慮購買全新帳號;3、或先在主帳號下載所需軟體和桌布,再切到其他帳號。 4.只要輕觸開啟軟體,便無礙。 5、您可以在上述網頁上查看屬性“

iBatis與MyBatis:你該選擇哪一個?簡介:隨著Java語言的快速發展,許多持久化框架也應運而生。 iBatis和MyBatis是兩個備受歡迎的持久化框架,它們都提供了一個簡單而高效的資料存取解決方案。本文將介紹iBatis和MyBatis的特點和優勢,並給出一些具體的程式碼範例,幫助你選擇合適的框架。 iBatis簡介:iBatis是一個開源的持久化框架

wallpaperengine是常用於設定桌面壁紙的軟體,使用者在wallpaperengine裡可以搜尋自己喜歡的圖片來產生桌面壁紙,也支援將電腦中的圖片加入到wallpaperengine中設定成電腦桌布。下面就來看看wallpaperengine設定鎖定螢幕桌布的方法吧。 wallpaperengine設定鎖定畫面壁紙教學 1、先進入軟體,然後選擇已安裝,點選「設定壁紙選項」。 2、單獨設定選擇完壁紙後需點選右下方的確定。 3、再去點選上方的設定選和預覽。 4、接下來

1.處理器在選擇電腦配置時,處理器是至關重要的組件之一。對於玩CS這樣的遊戲來說,處理器的效能直接影響遊戲的流暢度和反應速度。建議選擇IntelCorei5或i7系列的處理器,因為它們具有強大的多核心處理能力和高頻率,可以輕鬆應對CS的高要求。 2.顯示卡顯示卡是遊戲表現的重要因素之一。對於射擊遊戲如CS而言,顯示卡的表現直接影響遊戲畫面的清晰度和流暢度。建議選擇NVIDIAGeForceGTX系列或AMDRadeonRX系列的顯示卡,它們具備出色的圖形處理能力和高幀率輸出,能夠提供更好的遊戲體驗3.內存電

使用者在使用wallpaperengine可以下載各種壁紙,也可以使用動態壁紙,有很多使用者不知道wallpaperengine看片有沒有病毒,只是影片檔是無法當作病毒的。 wallpaperengine看片有病毒嗎答:不會。 1、只是視訊檔案是無法作為病毒的。 2、只要確保從可信的來源下載視頻,並保持電腦的安全防護措施,就可以避免病毒感染的風險。 3.應用程式類壁紙是apk格式,apk可能會攜帶木馬病毒。 4.WallpaperEngine本身沒有病毒,但是創意工坊裡的一些應用程式類壁紙可能有病毒。

使用者在使用wallpaper時可以下載各種自己喜歡的桌布來使用,有許多使用者不知道wallpaper的桌佈在哪個資料夾,使用者下載的桌布存放在content資料夾裡。 wallpaper的壁紙在哪個文件夾答:content文件夾。 1、開啟檔案總管。 2、點選左側「此電腦」。 3、找到“STEAM”資料夾。 4、選擇“steamapps”。 5、點選“workshop”。 6.找尋「content」資料夾。

使用者在使用wallpaperengine時可以更改自己的電腦桌布,有很多使用者不知道wallpaperengine耗電多嗎,動態桌布是會比靜態壁紙更耗電一點,但耗得不是很多。 wallpaperengine耗電多嗎答:不多。 1.動態壁紙是會比靜態壁紙更耗電一點,但耗得不是很多。 2.開啟動態桌布會增加電腦耗電量,並帶走一小小部分記憶體佔用。 3.用戶不需要擔心動態壁紙消耗電比較嚴重的。

請問怎麼查看wallpaper訂閱記錄呢?許多用戶在該軟體上進行了大量的訂閱,但可能不清楚如何查詢這些記錄。其實,您只需要在軟體的瀏覽功能區進行操作即可。 wallpaperengine訂閱記錄在哪答:在瀏覽介面。 1.請先啟動電腦,並進入wallpaper軟體。 2、找到應用程式左上方的瀏覽標籤圖示並點擊。 3.在「瀏覽」介面中,您將看到各類壁紙及訂閱源的總覽。 4.在右上角的搜尋框中輸入您想要搜尋的關鍵字。 5.依靠搜尋結果,你便能找到訂閱壁紙的來源資訊。 6.點選對應的訂閱源,即可進入其網頁。 7、在訂
