使用jQuery的autocomplete实现数据查询一次,联想自动补全

news/2024/7/11 1:31:43 标签: jquery, 前端, javascript

书接上回,上次说到在jsp页面中,通过监听输入框的数值变化,实时查询数据库,得到返回值使用autocomplete属性自动补全,实现一个联想补全辅助操作,链接:使用jquery的autocomplete属性实现联想补全操作-CSDN博客

但是这种方法对数据库压力太大,这次通过改造,实现了页面初始化时将需要补全的全部信息查出放在页面,页面上的补全操作相当于使用本地数据联想补全,大大减轻了数据库压力。

由于是页面初始化时就将返回值放入域中,首先是后台代码:

@RequestMapping(value = "/init")
    public String init(ModelMap map, HttpServletRequest request, HttpServletResponse response) {
        List<AutoCode> autoList = autoService.getCodeList();

        String exchange = JSON.toJSONString(certificateList);
        certificateList = JSON.parseArray(exchange, CertificateCode.class);
        StringBuilder rtnData = new StringBuilder();
        for (AutoCode auto: autoList ){
            rtnData.append(",{'code':'").append(auto.getCode()).append("','name':'").append(auto.getName()).append("'}");
        }
        String rtn = "["+rtnData.toString().substring(1)+"]";
        map.put("autocomplete",rtn);
        return "rtn/autocomplete";

    }

上述代码中掺杂了些个人业务,重点就在于里面那个for循环,核心思路就是,将返回值做成一个json串返回前端,json串格式都是统一的:{’名称’:‘内容’,‘名称’:‘内容’......},我这里做成了每条数据都是代码+内容,业务根据个人来实现即可。

前端代码:

//引用autocomplete的js文件 ,css文件就不做展示了
<script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery.autocomplete.js" charset="U-8"></script>
    <%
        //EL表达式获取后台传回的需要自动补全的内容
        String autocomplete = (String) request.getAttribute("autocomplete");
    %>
    <script type="text/javascript">

//页面自动补全的核心方法
        $(document).ready(function () {
            var autocomplete = <%=autocomplete%>;
            $("#auto").autocomplete(
                autocomplete,
                {
                    //方法属性在上一版文章中有详解
                    minChars: 1,
                    max:10,
                    width: 300,
                    matchContains: true,
                    autoFill: false,
                    //拼装json中的代码与值
                    formatItem:function(item) {
                        return "["+item.code+"]\""+item.name+"\"";
                    },
                    formatMatch: function(row, i, max) {
                        return row.name+ " " + row.code;
                    },
                    formatResult: function(row) {
                        return row.name;
                    }
                }).result(function(event,data,formatted){
                $("#auto").val("");
                if(data!=null && data!=''){
                    $("#auto").val(data.code);
                }
            });
        });

前端的实现实际上就是一个纯页面操作,后台返回前端的数据可以看做是页面写死的数据,这个autocomplete方法直接拿来使用,例如:

 String autocomplete = (String) request.getAttribute("autocomplete");


将上述代码替换为写死的串:
var autocomplete = [{'zsdm':'01','zsmc':'一元二次方程'},{'zsdm':'012','zsmc':'99A坦克'},{'zsdm':'123','zsmc':'hellword'}];

最终实现效果为:

此时便完成了对初始的,监听输入框内容改变实时查询数据库实现自动补全的改造。后台拿到全部的补全信息放到前端,剩余操作便由前端autocomplete属性自动完成。


http://www.niftyadmin.cn/n/5438384.html

相关文章

Telegraf--采集指定信息

Telegraf 采集字段解释 根据需求选取需要采集的字段,直接配置在fieldpass中,这样的好处是节约流量,更加简洁明了。下面加粗的部分是telegraf.conf中配置的指标,其他指标根据需求添加即可。 2024年3月18日10:55:41 更新说明: 添加自定义温度指标采集 CPU信息 usage_iowait:…

B007-springcloud alibaba 消息驱动 Rocketmq

目录 MQ简介什么是MQMQ的应用场景异步解耦流量削峰 常见的MQ产品 RocketMQ入门RocketMQ环境搭建环境准备安装RocketMQ启动RocketMQ测试RocketMQ关闭RocketMQ RocketMQ的架构及概念RocketMQ控制台安装 消息发送和接收演示发送消息接收消息 案例订单微服务发送消息用户微服务订阅…

智慧能源-数字化能源转型革命

随着全球环境问题的日益严峻和能源需求的不断增长&#xff0c;能源行业正面临着前所未有的挑战和机遇。在这个背景下&#xff0c;数字化技术的快速发展为能源行业的转型提供了新的思路和手段。智慧能源作为一种全新的能源发展理念&#xff0c;正逐渐成为能源领域的热门话题。 智…

Android ViewPager不支持wrap_content的原因

文章目录 Android ViewPager不支持wrap_content的原因问题源码分析解决 Android ViewPager不支持wrap_content的原因 问题 <androidx.viewpager.widget.ViewPagerandroid:id"id/wrap_view_pager"android:layout_width"match_parent"android:layout_he…

gitlab runner没有内网的访问权限应该怎么解决

如果你的GitLab Runner没有内网访问权限&#xff0c;但你需要访问内部资源&#xff08;如私有仓库或其他服务&#xff09;&#xff0c;你可以考虑以下几种方法&#xff1a; VPN 或 SSH 隧道&#xff1a; 在允许的情况下&#xff0c;通过VPN或SSH隧道连接到内部网络。这将允许Gi…

KTV点歌系统|基于JSP技术+ Mysql+Java+ B/S结构的KTV点歌系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

DevOps-SonarQube整合Jenkins

下载SonarQube Scanner 登录Jenkins服务器&#xff0c;下载SonarQube Scanner wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-5.0.1.3006-linux.zip安装unzip&#xff0c;需要通过它来解压zip压缩包 yum install -y unzip解压So…

HarmonyOS NEXT应用开发—图片压缩方案

介绍 图片压缩在应用开发中是一个非常常见的需求&#xff0c;特别是在处理用户上传图片时&#xff0c;需要上传指定大小以内的图片。目前图片压缩支持jpeg、webp、png格式。本例中以jpeg图片为例介绍如何通过packing和scale实现图片压缩到目标大小以内。 效果图预览 使用说明…