關(guān)于layui的下拉搜索框異步加載數(shù)據(jù)的解決方法
思路分析:當(dāng)我使用layui默認(rèn)的下拉搜索框的時(shí)候,layui會(huì)默認(rèn)渲染出一個(gè)HTML結(jié)構(gòu),所以我把渲染出來(lái)的這個(gè)結(jié)果直接給復(fù)制出來(lái),這樣css的樣式就不用從頭到尾寫一遍了,
前端代碼(我用的是jsp):
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <link rel="stylesheet" href="statics/css/font.css" rel="external nofollow" > <link rel="stylesheet" href="statics/css/xadmin.css" rel="external nofollow" > </head> <body> <form class="layui-form" action=""> <div class="layui-inline"> <label class="layui-form-label">搜索選擇框</label> <div class="layui-input-inline"> <div class="layui-form-select layui-form-selected searchDiv"> <div class="layui-select-title"><input type="text" placeholder="直接選擇或搜索選擇" value="" class="layui-input search_input" id="search_input"></div> <dl class="layui-anim layui-anim-upbit" style="display: block;"> <!-- <dd lay-value="" class="layui-select-tips layui-this">直接選擇或搜索選擇</dd> --> <!-- <dd lay-value="1" class="layui-this">layer</dd> <dd lay-value="2" class="">form</dd> <dd lay-value="3" class="">layim</dd> --> <!-- <dd lay-value="4" class="">element</dd> <dd lay-value="5" class="">laytpl</dd> <dd lay-value="6" class="">upload</dd> <dd lay-value="7" class="">laydate</dd> <dd lay-value="8" class="">laypage</dd> <dd lay-value="9" class="">flow</dd> <dd lay-value="10" class="">util</dd> <dd lay-value="11" class="">code</dd> <dd lay-value="12" class="">tree</dd> <dd lay-value="13" class="">layedit</dd> <dd lay-value="14" class="">nav</dd> <dd lay-value="15" class="">tab</dd> <dd lay-value="16" class="">table</dd> <dd lay-value="17" class="">select</dd> <dd lay-value="18" class="">checkbox</dd> <dd lay-value="19" class="">switch</dd> <dd lay-value="20" class="">radio</dd> --> </dl> </div> </div> </div> <div class="layui-form-item"> <div class="layui-input-block"> <button class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button> <button type="reset" class="layui-btn layui-btn-primary">重置</button> </div> </div> </form> <script src="statics/lib/layui/layui.js" charset="utf-8"></script> <script> layui.use(['form', 'jquery','layer'], function(){ var form = layui.form var $=layui.$; var layer=layui.layer; var oldValue=null; $(".search_input").keyup(function(event){ //alert(event.keyCode) //layer.msg(event.keyCode); if(event.keyCode==40){ //方向健↓ //如果是最后一個(gè)則不用做任何事情 if($(this).parent().next("dl").children(":last").hasClass("layui-this")){ return; } $(this).parent().next("dl").find("dd.layui-this").removeClass("layui-this").next("dd").addClass("layui-this"); $dl=$(this).parent().next("dl"); $dl.scrollTop($dl.scrollTop()+$dl.find("dd.layui-this").height()); return; } if(event.keyCode==38){ //方向健↑ //如果是第一個(gè)則不用做任何事情 if($(this).parent().next("dl").children(":first").hasClass("layui-this")){ return; } $(this).parent().next("dl").find("dd.layui-this").removeClass("layui-this").prev("dd").addClass("layui-this"); $dl=$(this).parent().next("dl"); $dl.scrollTop($dl.scrollTop()-$dl.find("dd.layui-this").height()); return; } if(event.keyCode==13){ //按回車鍵給文本框賦值 $(this).val($(this).parent().next("dl").find("dd.layui-this").html()); oldValue=$(this).val().trim(); return; } if(oldValue!=$(this).val().trim()){ //如果輸入框的值沒(méi)有改變就沒(méi)必要發(fā)送ajax請(qǐng)求 //根據(jù)用戶輸入的內(nèi)容發(fā)送ajax請(qǐng)求查詢以此內(nèi)容開(kāi)頭的商品簡(jiǎn)碼,從而查出符合要求的商品名字 $.get("product/getProductsByCode",{"productCode":$(this).val()},function(data){ if(!!data){ //清除掉以前的值 $(".searchDiv dl.layui-anim").html(""); for(var i=0;i<data.length;i++){ $(".searchDiv").find("dl.layui-anim").append("<dd lay-value=\""+data[i].productId +"\" οnclick=\"changeSearchText(this)\">"+data[i].productName+"</dd>"); $(".searchDiv").find("dl.layui-anim").children("dd:first").addClass("layui-this"); } //重新渲染select //form.render('select'); } },'json') } }) form.on('submit(formDemo)',function(){ return false; //這樣的做的目的是因?yàn)槔锩嬗形谋据斎肟矗?dāng)我們按回車鍵的時(shí)候會(huì)默認(rèn)提交表單,所以要進(jìn)行此操作 }) }); function changeSearchText(obj){ document.getElementById("search_input").value=obj.innerHTML; } </script> </body> </html>
后臺(tái)代碼我就不貼了,我是認(rèn)為后臺(tái)沒(méi)有必要貼了
以上這篇關(guān)于layui的下拉搜索框異步加載數(shù)據(jù)的解決方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
js左側(cè)三級(jí)菜單導(dǎo)航實(shí)例代碼
在左側(cè)三級(jí)菜單導(dǎo)航想必大家都見(jiàn)到過(guò)吧,它的實(shí)現(xiàn)過(guò)程也并不復(fù)雜,下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以了解下2013-09-09JavaScript實(shí)現(xiàn)簡(jiǎn)單的拖動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)簡(jiǎn)單的拖動(dòng)效果,具有一定的參考價(jià)值,感興趣的朋友可以參考一下2016-07-07laydate如何根據(jù)開(kāi)始時(shí)間或者結(jié)束時(shí)間限制范圍
這篇文章主要為大家詳細(xì)介紹了laydate根據(jù)開(kāi)始時(shí)間或者結(jié)束時(shí)間限制范圍的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11JavaScript 函數(shù)式編程實(shí)踐(來(lái)自IBM)
說(shuō)到函數(shù)式編程,人們的第一印象往往是其學(xué)院派,晦澀難懂,大概只有那些蓬頭散發(fā),不修邊幅,甚至有些神經(jīng)質(zhì)的大學(xué)教授們才會(huì)用的編程方式。2010-06-06使用JS簡(jiǎn)單實(shí)現(xiàn)apply、call和bind方法的實(shí)例代碼
在JavaScript中,call、apply和bind是Function對(duì)象自帶的三個(gè)方法,這三個(gè)方法的主要作用是改變函數(shù)中的this指向,下面這篇文章主要給大家介紹了關(guān)于如何使用JS簡(jiǎn)單實(shí)現(xiàn)apply、call和bind方法的相關(guān)資料,需要的朋友可以參考下2022-02-02