时间:2021-05-25
思路分析:当我使用layui默认的下拉搜索框的时候,layui会默认渲染出一个HTML结构,所以我把渲染出来的这个结果直接给复制出来,这样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){ //方向健↓ //如果是最后一个则不用做任何事情 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){ //方向健↑ //如果是第一个则不用做任何事情 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()){ //如果输入框的值没有改变就没必要发送ajax请求 //根据用户输入的内容发送ajax请求查询以此内容开头的商品简码,从而查出符合要求的商品名字 $.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; //这样的做的目的是因为里面有文本输入看,当我们按回车键的时候会默认提交表单,所以要进行此操作 })});function changeSearchText(obj){ document.getElementById("search_input").value=obj.innerHTML;}</script></body></html>后台代码我就不贴了,我是认为后台没有必要贴了
以上这篇关于layui的下拉搜索框异步加载数据的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
初学layui时会遇到layui的下拉框总是显示不出来代码没问题但是页面就是不显示下拉框复制下面js代码layui.use('form',function(){
复制代码代码如下:(function($){$.ajaxSetup({async:false});varu
layui数据表格实现重载数据表格功能,以搜索功能为例加载数据表格实现搜索功能和数据表格重载全部代码加载数据表格按照layui官方文档示例HTML部分JavaS
第一步form表单里写好一个下拉框下拉选择框第二步layui加载jquery模块动态给select添加optionlayui.use(['form','jque
思路:通过捕捉浏览器滚动条下拉事件,触发异步加载数据的js方法,实现数据的动态添加。脚本:varlastId=0;//记录每一次加载时的最后一条记录id,跟您的