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 相关文章推荐
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
Oct 11 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
Mar 18 Javascript
jQuery实现为控件添加水印文字效果(附源码)
Dec 02 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
Dec 02 Javascript
JS、jQuery中select的用法详解
Apr 21 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
May 25 Javascript
jQuery内容筛选选择器实例代码
Feb 06 Javascript
Angular @HostBinding()和@HostListener()用法
Mar 05 Javascript
webpack 插件html-webpack-plugin的具体使用
Apr 09 Javascript
JavaScript事件对象event用法分析
Jul 27 Javascript
vue-cli2打包前和打包后的css前缀不一致的问题解决
Aug 24 Javascript
使用Jenkins部署React项目的方法步骤
Mar 11 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 URL路由类实例
2013/11/12 PHP
php递归json类实例
2014/12/02 PHP
PHP 实现判断用户是否手机访问
2015/01/21 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
js window.onload 加载多个函数的方法
2009/11/02 Javascript
javascript之bind使用介绍
2011/10/09 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
javascript 动态创建表格的2种方法总结
2015/03/04 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
jQuery实现调整表格单列顺序完整实例
2016/06/20 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
2016/12/01 Javascript
Vue+Element实现动态生成新表单并添加验证功能
2019/05/23 Javascript
Vue 实现从文件中获取文本信息的方法详解
2019/10/16 Javascript
Python多维/嵌套字典数据无限遍历的实现
2016/11/04 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
python多个模块py文件的数据共享实例
2019/01/11 Python
python多线程案例之多任务copy文件完整实例
2019/10/29 Python
Django数据库操作之save与update的使用
2020/04/01 Python
python3.5的包存放的具体路径
2020/08/16 Python
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
英国大码女性时装零售商:Evans
2018/08/29 全球购物
最便宜促销价格订机票:Airpaz(总部设在印尼,支持中文)
2018/11/13 全球购物
网络、C以及其他硬件方面的面试题
2016/08/23 面试题
什么是TCP/IP
2014/07/27 面试题
应届大学毕业生找工作的求职信范文
2013/11/29 职场文书
优秀教师工作感言
2014/02/16 职场文书
中介公司区域经理岗位职责范本
2014/03/02 职场文书
大学生简短的自我评价
2014/09/12 职场文书
爱心募捐感谢信
2015/01/22 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书
Nginx反向代理学习实例教程
2021/10/24 Servers
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL