Jquery.UI.autocomplate

自动填充输入框: 适用数据源数据大,且需要根据输入查询并选择数据的情景。


示例.gif

演示版本

<html>
<head>
    <!--bootstrap css-->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdn.bootcss.com/jqueryui/1.11.0/jquery-ui.min.css" crossorigin="anonymous">

    <!--jquery js-->  
    <script src="https://code.jquery.com/jquery-3.1.0.min.js"></script>
    <script src="https://code.jquery.com/jquery-migrate-3.0.0.min.js"></script>
    <!--bootstrap js-->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
    <script src="https://cdn.bootcss.com/jqueryui/1.11.1/jquery-ui.min.js" crossorigin="anonymous"></script>

</head>
<body>
<p>
    <input id="name"/>
</p>

<script type="text/javascript">
    $("#name").autocomplete({
        minLength: 3, //输入3个字符后 再开始匹配
        select: function (event, ui) {
            console.log(JSON.stringify(ui));
            console.log($(event.target).val()); //获取输入框对象
        },
        source: function (request, response) {
            // 这里可以用ajax调用接口,查询和输入匹配的结果  request.term可以获取文本框输入的内容
            var result = [
                {label: '你好', value: 'hello',att1:'nihao'}, // label为 下拉列表中展示的,value为选中后输入框显示的  还可自定义其他属性,在select事件中都可以获取到
                {label: '再见', value: 'bye',att1:'zaijian'},
            ];
            response(result);
        }
    })

</script>
</body>

</html>

ajax动态查询版本

<html>
<head>
    <!--bootstrap css-->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdn.bootcss.com/jqueryui/1.11.0/jquery-ui.min.css" crossorigin="anonymous">

    <!--jquery js-->  
    <script src="https://code.jquery.com/jquery-3.1.0.min.js"></script>
    <script src="https://code.jquery.com/jquery-migrate-3.0.0.min.js"></script>
    <!--bootstrap js-->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
    <script src="https://cdn.bootcss.com/jqueryui/1.11.1/jquery-ui.min.js" crossorigin="anonymous"></script>

</head>
<body>
<p>
    <input id="name"/>
</p>

<script type="text/javascript">
    $("#name").autocomplete({
        minLength: 3, //输入3个字符后 再开始匹配
        select: function (event, ui) {
            console.log(JSON.stringify(ui));
            console.log($(event.target).val()); //获取输入框对象
        },
        source: function (request, response) {
            $.ajax({
                url: "xxxx",
                data: {"param": request.term},
                type: 'GET',
                success: function (data) {
                    var result = data.rows.map(function (item) {
                        return {label: item.itCode, value: item.itCode, real: item.id}
                    });
                    response(result);
                }
            });
        }
    })

</script>
</body>

</html>

PS:用的时候有需要注意的坑

  1. 如果在bootstrap的模态窗体使用autocomplete,则输入框的下拉列表无法展示,被模态窗口给挡住了,解决方案就是将autocomplete的下拉列表z-index样式设置的更大
.ui-autocomplete {
        z-index: 9999;
    }

2.如果页面中使用到bootstrap-datetimepicker,则日期选择框的样式会被打乱,解决方案是将jquery-ui.js中关于datetimepicker相关的操作删除掉。可以点击链接下载去掉后的jquery-ui.js

链接:https://pan.baidu.com/s/1H8f05Ph1onHKUOBcZrzZpg 密码:tyf0

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • javascript功能插件大集合,写前端的亲们记得收藏 包管理器管理着 javascript 库,并提供读取和打...
    狗狗嗖阅读 4,243评论 0 1
  • 前端组件库 搭建web app常用的样式/组件等收集列表(移动优先) 8. 路由和链接(Routing And U...
    guanguans阅读 7,943评论 0 17
  • Bootstrap 插件概览 在前面 布局组件 章节中所讨论到的组件仅仅是个开始。Bootstrap 自带 12 ...
    小挠许阅读 2,905评论 0 0
  • 非暴力沟通的第一个要素就是观察。我们仔细观察正在发生的事情,并清楚地说出观察的结果。这里,重点强调的是区分...
    职面人生阅读 3,770评论 0 0
  • 时间如流沙一般流逝,相对于生命中其它事物,每一个人的三观不同角度以及立场都有着千差万别,在大多数事物中公平也是有失...
    优贰阅读 2,720评论 0 7

友情链接更多精彩内容