layui实现地址下拉框模糊查询

layui实现地址下拉框模糊查询

HTML代码

注意:千万不要少 lay-search

<div class="layui-col-md4">
   <label class="layui-form-label"><em>*</em>始发地:</label>
   <div class="layui-input-block layui-form" lay-filter="OD_START_LAND">
       <select name="OD_START_LAND" id="OD_START_LAND" lay-filter="OD_START_LAND" lay-verify="required" lay-search>
           <option value="">请输入</option>
       </select>
   </div>
</div>

js代码

   selectLike({
            id: "OD_START_LAND",
            url: "/Basic/GetAreaDrop",
            paramKey: "name",
            currValue: startValue,//当前值,用于编辑时赋值或赋默认值
            pageSize: 30, //最大检索行数默认为10行
            option: {
                keyField: "ID",
                textField: "FULL_CNAME"
            },
            //keyCode: [32],
            timer: 500  //输入完成后自动触发检索的时间间隔(毫秒)
        });

selectLike的底层配置

function selectLike(obj) {
    var lastTimer = 0;
    //参数
    var oldValue = "";
    var pramas = { pageSize: obj.pageSize || 10 };
    //值为空时
    if (typeof obj.currValue === "undefined" || obj.currValue === null || obj.currValue === "") {
        pramas[obj.paramKey] = oldValue;
        form.render("select", obj.id);
        //$("#" + obj.id).next().find("input").unbind('keyup').on('keyup', function () {
        //    var val = (this.value || "").trim();
        //    inputKeyup(val);
        //});
        if (obj.keyCode && obj.keyCode.push) {
            //柑橘按键检索
            $("#" + obj.id).next().find("input").on('keydown', function () {
                var val = (this.value || "").trim();
                //配置查询键位,需用code判断
                var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
                if (obj.keyCode.indexOf(keyCode) >= 0) {
                    inputKeyup(val);
                    return false;
                }
            });
        } else {
            $("#" + obj.id).next().find("input").on('keyup', function () {
                var val = (this.value || "").trim();
                inputKeyup(val);
            });
        }
    } else {
        oldValue = obj.currValue;
        pramas[obj.paramKey] = oldValue;
        getData(pramas);
    }

    function inputKeyup(val) {
        //判断是否有timer,有,清除原有的timer,创建新的timer
        if (lastTimer != 0) clearTimeout(lastTimer);
        lastTimer = setTimeout(function () {
            if (val && val != oldValue) {
                oldValue = val;
                pramas[obj.paramKey] = oldValue;
                getData(pramas);
            }
        }, obj.timer || 200);
    }

    function getData(pramas) {
        $.ajax({
            type: "POST",
            url: obj.url,
            data: pramas,
            success: function (data) {
                //添加默认元素
                $("#" + obj.id).empty().append(new Option("", ""));
                $.each(data, function (index, item) {
                    if (item[obj.option.keyField] == obj.currValue)
                        $("#" + obj.id).append(new Option(item[obj.option.textField], item[obj.option.keyField], true, true));
                    else $("#" + obj.id).append(new Option(item[obj.option.textField], item[obj.option.keyField]));
                });
                var currValue = $("#" + obj.id).next().find("input").val();
                form.render("select", obj.id);
                //从新绑定事件
                //$("#" + obj.id).next().find("input").on('keyup', function () {
                //    var val = (this.value || "").trim();
                //    inputKeyup(val);
                //});
                if (obj.keyCode && obj.keyCode.push) {
                    $("#" + obj.id).next().find("input").on('keydown', function () {
                        var val = (this.value || "").trim();
                        //配置查询键位,需用code判断
                        var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
                        if (obj.keyCode.indexOf(keyCode) >= 0) {
                            inputKeyup(val);
                            return false;
                        }
                    });
                } else {
                    $("#" + obj.id).next().find("input").on('keyup', function () {
                        var val = (this.value || "").trim();
                        inputKeyup(val);
                    });
                }
                //input赋值
                if (typeof obj.currValue === "undefined" || obj.currValue === null) {
                    $("#" + obj.id).next().find("input").val(currValue);
                    $("#" + obj.id).next().find("input").trigger('click').trigger('focus');
                }
                obj.currValue = undefined;
            }
        });
    }
}

后端代码

控制器中

/// <summary>
/// 地区下拉框
/// </summary>
/// <param name="name"></param>
/// <param name="pageSize"></param>
/// <returns></returns>
[HttpPost]
public ActionResult GetAreaDrop(string name, int pageSize = 30)
{
    List<BasicArea> data = new BasicAreaService().GetAreaDrop(name, pageSize);
    return ContentJsonString(JsonConvert.SerializeObject(data));
}

service层

 public List<BasicArea> GetAreaDrop(string name, int pageSize)
 {
       string sql = @"SELECT ID, AREA_CODE ,FULL_CNAME  FROM BASIC_AREA where  FULL_CNAME is not null AND ISDEL='0' ";
       if (!string.IsNullOrEmpty(name))
       {
           name = name.Replace("'", "");
           sql += $" and (FULL_CNAME like '%{name}%' or  AREA_CODE='{name}' OR to_char(ID)='{name}')";
       }
       List<BasicArea> data = Db.SqlQueryable<BasicArea>(sql).ToList();
       return data;
   }

实现的效果图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/325021.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

必示科技助力中国联通智网创新中心通过智能化运维(AIOps)通用能力成熟度3级评估

2023年12月15日&#xff0c;中国信息通信研究院隆重公布了智能化运维AIOps系列标准最新批次评估结果。 必示科技与中国联通智网创新中心合作的“智能IT故障监控定位分析能力建设项目”通过了中国信息通信研究院开展的《智能化运维能力成熟度系列标准 第1部分&#xff1a;通用能…

MiniTab的拟合回归模型的分析

拟合回归模型概述 使用拟合回归模型和普通最小二乘法可以描述一组预测变量和一个连续响应之间的关系。可以包括交互作用项和多项式项、执行逐步回归和变换偏斜数据。 例如&#xff0c;房地产评估人员想了解城市公寓与多个预测变量&#xff08;包括建筑面积、可用单元数量、建…

Linux Mii management/mdio子系统分析之一 总体概述

Linux Mii management/mdio子系统分析之一 总体概述 &#xff08;转载&#xff09;原文链接&#xff1a;https://blog.csdn.net/u014044624/article/details/123303099 从本章开始&#xff0c;我们介绍linux的mii management对应的mdio子模块&#xff0c;该模块主要用于管理phy…

分布式光伏运维平台在提高光伏电站发电效率解决方案

摘要&#xff1a;伴随着能源危机和环境恶化问题的日益加重&#xff0c;科技工作者进一步加大对新能源的开发和利用。太阳能光伏发电作为新型清洁能源的主力军&#xff0c;在实际生产生活中得到了广泛的应用。然而&#xff0c;光伏发电效率偏低&#xff0c;成为制约光伏发电发展…

6、CLIP:连接文本和视觉世界的预训练模型

目录 一、论文题目 二、背景与动机 三、创新与卖点 四、技术细节 模型结构 简易代码 clip实现zero shot分类 五、为什么是CLIP?为什么是对比学习&#xff1f; 六、一些资料 在人工智能领域&#xff0c;文本和图像是两个极其重要的数据形式。传统上&#xff0c;机器学…

2019年认证杯SPSSPRO杯数学建模B题(第二阶段)外星语词典全过程文档及程序

2019年认证杯SPSSPRO杯数学建模 基于统计和迭代匹配的未知语言文本片段提取模型 B题 外星语词典 原题再现&#xff1a; 我们发现了一种未知的语言&#xff0c;现只知道其文字是以 20 个字母构成的。我们已经获取了许多段由该语言写成的文本&#xff0c;但每段文本只是由字母…

基于深度学习的实例分割的Web应用

基于深度学习的实例分割的Web应用 1. 项目简介1.1 模型部署1.2 Web应用 2. Web前端开发3. Web后端开发4. 总结 1. 项目简介 这是一个基于深度学习的实例分割Web应用的项目介绍。该项目使用PaddlePaddle框架&#xff0c;并以PaddleSeg训练的图像分割模型为例。 1.1 模型部署 …

小程序中使用微信同声传译插件实现语音识别、语音合成、文本翻译功能----语音识别(一)

官方文档链接&#xff1a;https://mp.weixin.qq.com/wxopen/plugindevdoc?appidwx069ba97219f66d99&token370941954&langzh_CN#- 要使用插件需要先在小程序管理后台的设置->第三方设置->插件管理中添加插件&#xff0c;目前该插件仅认证后的小程序。 语音识别…

通过myBatis将sql语句返回的值自动包装成一个java对象(3)

1.如果sql字段和java字段名字不一样怎么办&#xff1f; 之前我们将sql返回值转换为java对象时&#xff0c;每条sql的返回值的字段名和java类中的字段名是一一对应的&#xff0c;ie&#xff1a;sql选择的user有username和password两个字段&#xff0c;java中的user对象也有两个…

Web 服务器渗透测试清单

Web 服务器渗透测试在三个重要类别下进行&#xff1a;身份、分析和报告漏洞&#xff0c;例如身份验证弱点、配置错误和协议关系漏洞。 1. “进行一系列有条不紊且可重复的测试”是测试网络服务器是否能够解决所有不同应用程序漏洞的最佳方法。 2.“收集尽可能多的信息”关于…

canvas截取视频图像(图文示例)

查看专栏目录 canvas示例教程100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

【Java数据结构】03-二叉树,树和森林

4 二叉树、树和森林 重点章节&#xff0c;在选择&#xff0c;填空&#xff0c;综合中都有考察到。 4.1 掌握二叉树、树和森林的定义以及它们之间的异同点 1. 二叉树&#xff08;Binary Tree&#xff09; 定义&#xff1a; 二叉树是一种特殊的树结构&#xff0c;其中每个节点…

【图形学】探秘图形学奥秘:区域填充的解密与实战

​&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《图形学 | 图像解码》⏰诗赋清音&#xff1a;云生高巅梦远游&#xff0c; 星光点缀碧海愁。 山川深邃情难晤&#xff0c; 剑气凌云志自修。 目录 &#x1f30c;1. 初识模式识别 …

精确掌控并发:滑动时间窗口算法在分布式环境下并发流量控制的设计与实现

这是《百图解码支付系统设计与实现》专栏系列文章中的第&#xff08;15&#xff09;篇&#xff0c;也是流量控制系列的第&#xff08;2&#xff09;篇。点击上方关注&#xff0c;深入了解支付系统的方方面面。 上一篇介绍了固定时间窗口算法在支付渠道限流的应用以及使用redis…

Golang 里的 context

context 的作用 go 的编程中&#xff0c;常常会在一个 goroutine 中启动多个 goroutine&#xff0c;然后有可能在这些 goroutine 中又启动多个 goroutine。 如上图&#xff0c;在 main 函数中&#xff0c;启动了一个 goroutine A 和 goroutine B&#xff0c;然后 goroutine A …

UI自动化测试框架

文章目录 UI自动化基础什么是UI自动化测试框架UI自动化测试框架的模式数据驱动测试框架关键字驱动测试框架行为驱动测试框架 UI自动化测试框架的作用UI自动化测试框架的核心思想UI自动化测试框架的步骤UI自动化测试框架的构成UtilsLog.javaReadProperties.Java coreBaseTest.ja…

js等于操作符和全等操作符(== 和 ===)的区别,在什么情况下使用

在JavaScript中&#xff0c;&#xff08;等于操作符&#xff09;和&#xff08;全等操作符&#xff09;都是用来比较两个值是否相等的工具&#xff0c;但它们有一些重要的区别。 会尝试进行类型转换&#xff0c;然后再比较。这意味着它可能会将不同类型的值转换为相同类型&…

Vue的使用

1、概述 https://cn.vuejs.org/ vscode Volar插件 2、创建项目 npm init vuelatest Project name: //只能小写cd projecName npm install / cnpm install nmp run dev目录结构&#xff1a;

Python3 索引下标及切片完全指南

介绍 Python 字符串数据类型是由一个或多个字符组成的序列&#xff0c;可以包含字母、数字、空格字符或符号。由于字符串是一个序列&#xff0c;我们可以通过索引和切片的方式访问它&#xff0c;就像访问其他基于序列的数据类型一样。 本教程将指导您通过索引访问字符串&…

Linux如何查看执行过命令的时间?

history调出历史命令&#xff0c;默认不带执行时的时间&#xff0c;下面进行配置&#xff0c;就可以实现了 小白教程&#xff0c;一看就会&#xff0c;一做就成。 1.在~/.bashrc文件中添加如下行 HISTTIMEFORMAT"%Y-%m-%d:%H-%M-%S:whoami:" export HISTTIMEFORMAT…