如何用JS实现一个类似百度搜索框的输入框呢,再填充完失去焦点时,自动填充配置项,最终效果如下图:

实现很简单,但是易用性会上升一大截,需要用到的有jquery-ui的autocomplete,jquery的keyup事件,以及ajax与服务端的交互。

废话少说直接上代码:

引用,需要jquery-ui和jquery:

<link rel="stylesheet" href="/static/plugins/jqueryui1/jquery-ui-autocomplete.css">
<link rel="stylesheet" href="/static/plugins/jqueryui1/jquery-ui-1.7.1.css">
<script src="/static/plugins/jQuery/jQuery-2.1.4.min.js"></script>
<script src="/static/plugins/jQueryUI/jquery-ui.min.js"></script>

html输入框的设计,一个文本输入框和一个隐藏输入框:

<span class="bd_DW_checkbox_left_10">路径:</span>
<span><input type="text" id="path" class="bd_DW_input_len_350"><input type="hidden" id="hidden_path" class="bd_DW_input_len_350"/>
</span>

js代码中实现:

1、autocomplete自动填充

2、keyup事件

3、ajax与后端交互

简单来说:

1、文本输入框的每次键入,触发一个keyup事件;

2、事件的处理方式是向后端请求模糊推荐的项items,这里的返回数据结果是:

{"errno": 0;"data": ["path1", "path2" ... "pathN"]
}

3、autocomplete自动填充hidden输入框,其余的事情jquery-ui会为你处理好;

4、当你点选完成,或者是输入完成后,path框失去焦点(blur事件)的时候,会从后端请求数据,自动填充好各个输入框add_field。

具体代码如下:

function time_path_select() {//定义新数组var path_data = [];var _path_data = [];$("#time_path").autocomplete({source: _path_data});$("#time_path").keyup(function(event){var path=$("#time_path").val();if(path.length>0){var data_dict = send_get("/paths?path=" + path)var data = data_dict['data'];var len = data.length;for(var i=0;i<len-1;i++){path_data[i]=data[i];};$("#hidden_path").val(path_data);var _data=$("#hidden_path").val().split(",");for(var j=0;j<_data.length;j++){_path_data[j]=_data[j];}}});
}
function send_get(url) {    var json_data = "";    $.ajax({        type:"get",        url:url,        datatype:"json",        async: false,        error: function() {            pop_window("请求数据失败");        },        success:function(data) {            //json_data = $.parseJSON(data);            json_data = data;        },    });    return json_data;}
function pop_window(message) {    layer.alert(message, {        skin: 'layui-layer-lan',        closeBtn: 0    });}
function add_field() {    $('#time_path').blur(function(){        var path = $('#time_path').val();        var json_data = send_get('/time_config_item?path=' + path);        if (json_data != {}) {            $("#time_buffer_time").val(json_data['buffer_time']);            $("#time_task_name").val(json_data['item_name']);            $("#time_email").val(json_data['owner_email']);            $("#time_phone").val(json_data['owner_phone']);            $("#time_owner").val(json_data['owner']);            $("#bd_DW_monitor_status_select").val(json_data['status']);            var cron_config = json_data['cron_config'];            var list = cron_config.split(':');            if (list[0] == '*') {                $('#bd_DW_monitor_type_select').val('hour');            }            else {                $('#bd_DW_monitor_type_select').val('day');            }            $("#time_hour").val(list[0]);            $("#time_minute").val(list[1]);        }    });}
 

转载于:https://www.cnblogs.com/kangoroo/p/6349567.html

JavaScript实现模糊推荐的input框(类似百度搜索框)相关推荐

  1. 模糊查询(类似百度搜索框)

    很常见的搜索框,很常用,总结一下,怕自己忘了,使用的是原生的js. 这是原生写的,代码很简单,重要是思路.主要就是用了一个indexOf(),很简单.越简单的东西越难想到,很多人都会想到用正则去做,这 ...

  2. vue实现搜索框搜索新增_基于Vue el-autocomplete 实现类似百度搜索框功能_含真_前端开发者...

    效果图如下所示: 首先上代码 让数据触手可及 class="inline-input search-input" v-model="searchContent" ...

  3. 类似百度搜索框实时搜索的实现

    1.html代码 <input type="text" name="ProjectNumber" id="ProjectNumber" ...

  4. jQuery实现百度搜索框

    最近项目需求,写了一个类似百度搜索框的功能. 把代码整理了一遍,然后分享出来给大家看看,如果有不对的地方请多指教. 实现效果 使用的语言:html,css,JavaScript,jQuery 代码部分 ...

  5. 站长工具|百度搜索框提示功能

    百度向站长开放免费"百度搜索框"代码和"百度搜索框提示"代码.只需进行简单的设置, 即可将" 百度搜索框( 带提示功能)"功能快速加入到您的 ...

  6. html搜索框下拉怎么做,一步一步教你实现仿百度搜索框下拉效果(上)

    最终效果(chrome 下): 搜索框下拉 demo 今天就来简单讲解下如何做这样一个类似百度搜索框的下拉效果. 1.html 以及 css 部分 首先你得要有个输入框,这里我用了  控件,其次当用户 ...

  7. 百度搜索框代码(有下拉提示的)

    根据不同类型的网站需求,我们一共提供三种引入方式供您选择: ·简单方式--方便的将"百度搜索框(带提示功能)"直接加入到您的网页中. 将以下代码加入到您的网页中,即可获得带有&qu ...

  8. JavaScript实现百度搜索框提示

    案例---百度搜索框提示 文章目录 一.代码 二.代码解释 效果图(百度): 输入aa后底下就会出现相对应和aa有关系的一些提示. 一.代码 <!DOCTYPE html> <htm ...

  9. 有历史搜索记录的搜索框(百度搜索案例)

    带有历史搜索词条的搜索框 记录一下带有历史搜索词条的搜索框,具体效果类似百度搜索: 点击搜索框 展示历史搜索词条列表: 点击搜索框以外的区域 隐藏历史搜索词条列表: 点击删除除去对应词条. 效果图: ...

  10. [百度搜索框Bootstrap模仿]

    <!DOCTYPE html> <html><head><meta charset="utf-8"><title>百度搜 ...

最新文章

  1. 3行代码给你的python提速4倍!
  2. python删除文件一行数据、不使用临时文件_python下tempfile 临时文件删除问题
  3. 【tensorflow】——tensorboard可视化计算图以及参数曲线图loss图
  4. 高效!Anchor DETR:旷视提出一种基于Transformer的目标检测神器!
  5. Django 前后端数据传输、ajax、分页器
  6. 马云:员工表现不好,老板要先检讨
  7. 机器学习、统计分析、数据挖掘、神经网络、人工智能、模式识别,
  8. 黑苹果以太网网卡已安装 无法上网
  9. js中字符串方法集合
  10. 乔布斯鲜为人知的私生活:低调、曾经多情
  11. 处理团队人际关系的九大原则
  12. 爬虫是什么?可以用来干什么?
  13. Docker安装指定版本异常:Error: Package: docker-ce-17.03.1.ce-1.el7.centos.x86_64 (docker-ce-stable)
  14. Android群英传读书笔记-2D绘图基础
  15. 10分钟教你如何自动化操控浏览器——Selenium测试工具
  16. linux dae文件下载,dae文件扩展名,dae文件怎么打开?
  17. 【书摘】The Joshua tree epiphany
  18. 压力测试与性能测试的区别
  19. 物联网之NB-IoT技术实践开发一(NB-IoT物联网行业解决方案)
  20. [INS-35075] 指定的 SID 已在使用.

热门文章

  1. Eclipse或者MyEclipse—在Eclipse或MyEclipse中的操作(2)
  2. win10系统下如何查看端口被哪个进程占用
  3. linux环境判断nginx是否已经启动
  4. JUC并发编程超详细详解篇
  5. SqlServer复制表结构:从另一张表中获取某些字段和类型并添加到一张已经存在的表中...
  6. Redis 两种持久化方式的原理
  7. 22. 切勿直接修改set或multiset中的键
  8. 怎样访问服务器系统盘,访问云服务器上的系统盘
  9. spring加载bean的流程
  10. html直链如何修改成js,javascript – 使用route params直接链接到URL会破坏AngularJS App...