关于仿百度搜索框的简单思路【2017-12-25】

最近项目中要使用一个支持输入框搜索及查询,类似自动不全的功能 需求如下: 1.当输入框为空的时后,获取焦点后,显示出当前输入框可以显示的所有信息 2.当输入框输入信息后,支持模糊查询数据过滤。 3.当输入框及下拉显示框失去焦点后(点击其以外的区域,则隐藏显示的下拉框部分) 设计思路如下: 1.当点击输入框后,查询当前输入框可以查询的信息。显示在下拉显示列表中 2.当点击下拉列表时,回填当先下拉列表的输入值,显示在输入框中 3.当输入信息时,过滤当前下拉列表可以显示的信息,重新加载信息下拉列表 4.当点击下拉列表及输入框以外的区域时,隐藏下拉列表部分。(难点) 5,前台在输入框下面对接一个浮动的下拉列表(前端设计部分)

js部分:
$().ready(function() { //处理流程:点击时1、清空下拉框,根据输入框的值,查询下拉信息 $("#sns").click(function(){ var sns = $("#sns").val(); conDataToLi(sns); }); $(document).click(function(e){ var idValue = https://www.it610.com/article/$(e.target).attr("id"); //获取当前点击区域对象的id值 if(idValue != "sns" && idValue != "item" ){ $('#item').hide(); } }); var lastTime; $("#sns").keyup(function(e){ var sns = $("#sns").val(); $("#item").empty(); lastTime = e.timeStamp; setTimeout(function () { if (lastTime - e.timeStamp == 0) { conDataToLi(sns); } }, 1000); }); function conDataToLi(sns){ var templateLi ='
  • templateText
  • ' ; $.ajax({ url: "productSrch.htm", type: "POST", data: {sns:sns}, dataType: "json", success: function(data) { // 回填数据 if(data.length > 0){ $("#item").empty(); $("#item").show(); $.each(data, function(i, item) { var templateLis = "" ; templateLis=templateLi.replace("$templateVal",item.sn); templateLis=templateLis.replace("templateText",item.sn+"--"+item.fullName); $("#item").append(templateLis); }); // 绑定回填数据事件 $('#divEara ul li').click(function(){ // 回填数据 var $this = $(this); $("#sns").val($this.text()); // 隐藏弹出框 $("#item").empty(); $('#item').hide(); }); }else { $("#item").append('
  • 请选择
  • '); $('#item').hide(); } } }); }

    【关于仿百度搜索框的简单思路【2017-12-25】】});
    html代码部分:

    【难点主要是前端CSS不熟悉,所以比较坑】

      推荐阅读