Vue实现百度下拉提示搜索功能


Posted in Javascript onJune 21, 2017

一、前期准备

网上大神已经做过这个功能https://github.com/lavyun/vue-demo-search 这自己仅实现搜索功能
为了使用百度实现搜索功能,首先搞清楚下拉数据和搜索功能的数据接口

01、提示数据获取地址

打开百度官网打开开发者调试工具,选中network一项,然后我们在搜索框输入'a',将会network发送的请求,这个就是提示数据的数据获取地址

Vue实现百度下拉提示搜索功能

提示数据获取地址.png

然后简化一下:

https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=a&cb=jQuery110208352732182923484_1497924041050&_=1497924041057#

其中“wd=”后接搜索的关键字,“cb=”后接回调函数

Vue实现百度下拉提示搜索功能

输入a时,请求的提示数据

02:搜索功能实现地址

在输入框中输入“a”之后,点击搜索按钮之后,地址栏中地址就是实现搜索功能的地址

Vue实现百度下拉提示搜索功能

搜索地址.png

搜索地址简化前后对比,是不是看起来很舒服了O(∩_∩)O

Vue实现百度下拉提示搜索功能

简化地址.png

我们使用简化之后的地址,搜索关键字“s‘'测试一下

Vue实现百度下拉提示搜索功能

测试.png

二、代码实现

js代码

new Vue({
    el:'#app',
    data:{
      myData:[],
      keyword:'',
      now:-1
    },
    methods:{
      get:function (event) {
        if(event.keyCode==38||event.keyCode==40)return;
        if(event.keyCode==13){
          window.open('https://www.baidu.com/s?wd='+this.keyword);
          this.keyword=''
        }
        this.$http.jsonp('https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su',{
          wd:this.keyword
        },{
          jsonp:'cb'
        }).then(function (res) {
          this.myData=res.data.s;
        },function () {

        });
      },
      selectDown:function () {
        this.now++;
        if(this.now==this.myData.length)this.now=-1;
        this.keyword=this.myData[this.now];
      },
      selectUp:function () {
        this.now--;
        if(this.now==-2)this.now=this.myData.length-1;
        this.keyword=this.myData[this.now];
      }
    }
  })

html代码

<div class="container search-container" id="app">
  <h1 class="title" >baidu-search</h1>
  <input type="text" class="form-control" placeholder="请输入想要搜索关键字" v-model="keyword" @keyup="get($event)" @keydown.down.prevent="selectDown"
  @keydown.up.prevent="selectUp">
  <ul>
    <li class="text-center" v-for="(value,index) in myData"><span class="text-success textprimary" :class="{gray:index==now}">{{value}}</span></li>
  </ul>
  <p ><h2 v-show="myData.length==0" class="text-warning text-center">(*^__^*)暂时没有数据</h2></p>
</div>

get方法实现获取下拉数据和搜索功能,输入keyword之后,调用get方法使用jsonp获取提示数据,然后赋值给myData,然后使用v-for遍历提示数据

Vue实现百度下拉提示搜索功能

提示数据.png

然后selectDown和selectUp实现上下选中数据,当按下回车键时,实现搜索
完整代码:https://github.com/yanqiangmiffy/baidu-search

三、实现效果

Vue实现百度下拉提示搜索功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
自适应高度框架 ----属个人收藏内容
Jan 22 Javascript
js数字输入框(包括最大值最小值限制和四舍五入)
Nov 24 Javascript
jquery无刷新验证邮箱地址实现实例
Feb 19 Javascript
seaJs的模块定义和模块加载浅析
Jun 06 Javascript
再谈Javascript中的异步以及如何异步
Aug 19 Javascript
javascript创建对象的3种方法
Nov 02 Javascript
jQuery实现两个select控件的互移操作
Dec 22 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
Feb 26 Javascript
BootStrap中Table隐藏后显示问题的实现代码
Aug 31 Javascript
Angular中点击li标签实现更改颜色的核心代码
Dec 08 Javascript
ECharts地图绘制和钻取简易接口详解
Jul 12 Javascript
vue v-for 使用问题整理小结
Aug 04 Javascript
vue2.0中click点击当前li实现动态切换class
Jun 21 #Javascript
jQuery实现可拖动进度条实例代码
Jun 21 #jQuery
详解Vue整合axios的实例代码
Jun 21 #Javascript
详解在vue-cli项目中安装node-sass
Jun 21 #Javascript
详解vue-cli中配置sass
Jun 21 #Javascript
详解如何在vue中使用sass
Jun 21 #Javascript
JS表单提交验证、input(type=number) 去三角 刷新验证码
Jun 21 #Javascript
You might like
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
2011/08/09 PHP
php程序的国际化实现方法(利用gettext)
2011/08/14 PHP
php笔记之:php数组相关函数的使用
2013/04/26 PHP
async和DOM Script文件加载比较
2014/07/20 PHP
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
用Mootools获得操作索引的两种方法分享
2011/12/12 Javascript
JavaScript中把数字转换为字符串的程序代码
2013/06/19 Javascript
jQuery中:focus选择器用法实例
2014/12/30 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
2016/12/14 Javascript
javascript ES6中箭头函数注意细节小结
2017/02/17 Javascript
认识jQuery的Promise的具体使用方法
2017/10/10 jQuery
vue绑定的点击事件阻止冒泡的实例
2018/02/08 Javascript
使用javascript做在线算法编程
2018/05/25 Javascript
vue-cli2打包前和打包后的css前缀不一致的问题解决
2018/08/24 Javascript
vue做移动端适配最佳解决方案(亲测有效)
2018/09/04 Javascript
JQuery+drag.js上传图片并且实现图片拖曳
2020/11/18 jQuery
[02:41]DOTA2英雄基础教程 谜团
2013/12/10 DOTA
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
django框架基于模板 生成 excel(xls) 文件操作示例
2019/06/19 Python
Python pandas DataFrame操作的实现代码
2019/06/21 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
2019/07/19 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
python多项式拟合之np.polyfit 和 np.polyld详解
2020/02/18 Python
纯CSS3实现鼠标滑过按钮动画第二节
2020/07/16 HTML / CSS
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
英国女士和男士时尚服装网上购物:Top Labels Online
2018/03/25 全球购物
美国正版电视节目和电影在线观看:Hulu
2018/05/24 全球购物
关于对大人不礼貌的检讨书
2014/09/29 职场文书
计算机实训报告范文
2014/11/05 职场文书
2014年店长工作总结
2014/11/17 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
公司捐书倡议书
2015/04/27 职场文书
Python Matplotlib绘制条形图的全过程
2021/10/24 Python
mysql使用 not int 子查询隐含陷阱
2022/04/12 MySQL
oracle设置密码复杂度及设置超时退出的功能
2022/06/28 Oracle