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 相关文章推荐
js中关于new Object时传参的一些细节分析
Mar 13 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
Dec 27 Javascript
js获取当前日期代码适用于网页头部
Jun 27 Javascript
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
Nov 06 Javascript
浅谈Javascript 执行顺序
Dec 18 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
May 28 Javascript
SeaJS 与 RequireJS 的差异对比
Dec 08 Javascript
js一维数组、多维数组和对象的混合使用方法
Apr 03 Javascript
JavaScript Ajax编程 应用篇
Jul 02 Javascript
封装获取dom元素的简单实例
Jul 08 Javascript
CKEditor扩展插件:自动排版功能autoformat插件实现方法详解
Feb 06 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
Oct 28 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统计二维数组元素个数的方法
2013/11/12 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
php实现对文件压缩简单的方法
2019/09/29 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
2019/12/11 PHP
JavaScript 学习笔记(六)
2009/12/31 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
2016/12/28 Javascript
详解JavaScript树结构
2017/01/09 Javascript
JavaScript实现前端分页控件
2017/04/19 Javascript
Vue组件通信实践记录(推荐)
2017/08/15 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
2017/08/16 Javascript
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
详解ES6 系列之异步处理实战
2018/10/26 Javascript
layui实现给某一列加点击事件
2019/10/26 Javascript
使用axios请求接口,几种content-type的区别详解
2019/10/29 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
element中el-container容器与div布局区分详解
2020/05/13 Javascript
React实现todolist功能
2020/12/28 Javascript
利用Python开发实现简单的记事本
2016/11/15 Python
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
Python机器学习之决策树算法实例详解
2017/12/06 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
2019/08/07 Python
django项目登录中使用图片验证码的实现方法
2019/08/15 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
在python中计算ssim的方法(与Matlab结果一致)
2019/12/19 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
2020/03/02 Python
python定时截屏实现
2020/11/02 Python
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
美国时尚女装在线:Missguided
2016/12/03 全球购物
迷你唐卡软皮鞋:Minnetonka Moccasin
2018/05/01 全球购物
德国在线购买葡萄酒网站:Geile Weine
2019/09/24 全球购物
山海经纬软件测试笔试题和面试题
2013/04/02 面试题
本科生导师推荐信范文
2014/05/18 职场文书
淘宝店策划方案
2014/06/07 职场文书
医学专业毕业生求职信
2014/06/20 职场文书
学雷锋的心得体会
2014/09/04 职场文书
热爱劳动主题班会
2015/08/14 职场文书