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 相关文章推荐
jscript之Read an Excel Spreadsheet
Jun 13 Javascript
JavaScript小技巧 2.5 则
Sep 12 Javascript
JavaScript中数组对象的那些自带方法介绍
Mar 12 Javascript
分享10个原生JavaScript技巧
Apr 20 Javascript
js实现二级菜单渐隐显示
Nov 03 Javascript
深入理解JQuery中的事件与动画
May 18 Javascript
Boostrap基础教程之JavaScript插件篇
Sep 08 Javascript
Angular4自制一个市县二级联动组件示例
Nov 21 Javascript
微信小程序 如何引入外部字体库iconfont的图标
Jan 31 Javascript
利用hasOwnProperty给数组去重的面试题分享
Nov 05 Javascript
vue cli3.0 引入eslint 结合vscode使用
May 27 Javascript
微信小程序实现加入购物车滑动轨迹
Nov 18 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 团购折扣计算公式
2011/11/24 PHP
php根据日期判断星座的函数分享
2014/02/13 PHP
php过滤敏感词的示例
2014/03/31 PHP
使用PHP实现阻止用户上传成人照片或者裸照
2014/12/25 PHP
php经典算法集锦
2015/11/14 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
解析页面加载与js函数的执行 onload or ready
2013/12/12 Javascript
jQuery页面加载初始化常用的三种方法
2014/06/04 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
JavaScript获取文本框内选中文本的方法
2015/02/20 Javascript
JavaScript更改字符串的大小写
2015/05/07 Javascript
vue高德地图之玩转周边
2017/06/16 Javascript
BootStrap入门学习第一篇
2017/08/28 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
2018/03/08 Javascript
vue.js响应式原理解析与实现
2020/06/22 Javascript
js JSON.stringify()基础详解
2019/06/19 Javascript
es6 super关键字的理解与应用实例分析
2020/02/15 Javascript
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
Python生成器定义与简单用法实例分析
2018/04/30 Python
Python定义一个跨越多行的字符串的多种方法小结
2018/07/19 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
2019/05/13 Python
python取均匀不重复的随机数方式
2019/11/27 Python
大学生四个方面的自我评价
2013/09/19 职场文书
厨师长岗位职责
2014/03/02 职场文书
机械制造毕业生求职信
2014/03/03 职场文书
挂靠协议书范本
2014/04/22 职场文书
优秀学生干部个人事迹材料
2014/06/02 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
2015年外贸业务员工作总结范文
2015/05/23 职场文书
大学生军训感言
2015/08/01 职场文书
接收函
2019/04/22 职场文书