JQuery的Autocomplete自动补全

用户界面录入,从后台数据库查询匹配数据,以下拉框方式显示在下方,点击后内容进入文本框,老功能,翻出来备忘

1、使用JQuery-UI的Autocomplete自动补全
官方网址:https://jqueryui.com/autocomplete/#remote

2、动态数据
数据需要从后台实时查询返回,不是静态的
网上查了资料,总是这里那里不适配,所以完整写一下

  • 前台
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  <script type="text/javascript">
         $( function() {
             $( "#deviceName" ).autocomplete({
                source: function (request, response) {                    
                    $.ajax( {
                        url: "${ctx}/device/device/device/jsondata",  //这是我后台返回数据的链接地址
                        dataType: "json",
                        data: {
                            deviceName: request.term     
                            //查询参数,deviceName,是传给后台做查询的查询条件,request.term 是固定字段,不要改,写这个就是把文本框内的值塞到变量deviceName里作为参数传给后台
                        },
                        success: function( data ) {
                            response($.map( data, function (v,i) {
                                return {
                                    value: v.deviceName,
                                    id: v.id
                                    //data代表后台返回的字符串,json格式见下面,其中v代表json里的每条数据,每条数据两个字段,一个deviceName,一个id,赋值给文本框的下拉框控件,其实id赋值不赋值意义不大,最后拿到的都是value,value和id是固定字段,不要改
                                }
                            }));
                        }
                    });
                },
                minLength: 2
            });
        } );
</script>
<body>
 <input id="deviceName" name="deviceName" />
</body>
  • 后台JSON
    springboot的后台
@ResponseBody
@RequestMapping(value = "jsondata")
public String jsondata(String deviceName, HttpServletRequest request, HttpServletResponse response, Model model) {

        List<Device> list = 从后台通过deviceName查找到数据列表;
        //把数据转换成json字符串再返回去
        String json= "[";
        for(Device bean:list){
            json=json + "{\"id\":\""+bean.getId()+"\",\"deviceName\":\""+bean.getDeviceName()+"\"},";
        }
        if(json.length()>1)json=json.substring(0,json.length()-1);
        json = json +"]";
        return json;
    }

3、问题

由于jeeplus本身系统的Jquery是版本v3.3.1 ,Autocomplete使用版本jquery-1.12.4.js,使用这个版本jeeplus原有系统会出问题。只能使用v3.3.1 版本,但是问题就是下拉框的错位,如图所示
在这里插入图片描述
解决办法:

用jquery-migrate做向下兼容,到网站上找到你的高版本对应链接
https://www.bootcdn.cn/jquery-migrate/3.3.1/,比如我是3.3.1,我用的就是这个版本的jquery-migrate,复制链接到你前台界面里,如

<script src="https://cdn.bootcdn.net/ajax/libs/jquery-migrate/3.3.1/jquery-migrate.min.js"></script>

然后再运行,发现啥也不用改,位置就正常了,非常简单,也可以参考下面链接
jquery-migrate插件用法

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值