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高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
Feb 27 Javascript
form.submit()不能提交表单的原因分析
Oct 23 Javascript
JavaScript编写推箱子游戏
Jul 07 Javascript
js删除Array数组中指定元素的两种方法
Aug 03 Javascript
jQuery实现页面点击后退弹出提示框的方法
Aug 24 Javascript
jQuery实现背景滑动菜单
Dec 02 Javascript
vue打包使用Nginx代理解决跨域问题
Aug 27 Javascript
搭建一个Koa后端项目脚手架的方法步骤
May 30 Javascript
javascript系统时间设置操作示例
Jun 17 Javascript
基于ssm框架实现layui分页效果
Jul 27 Javascript
vue中通过使用$attrs实现组件之间的数据传递功能
Sep 01 Javascript
通过微信公众平台获取公众号文章的方法示例
Dec 25 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的输入输出流
2007/02/14 PHP
PHP通用分页类page.php[仿google分页]
2008/08/31 PHP
如何使用PHP计算上一个月的今天
2013/05/23 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
Laravel 框架路由原理与路由访问实例分析
2020/04/14 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
js replace正则表达式应用案例讲解
2013/01/17 Javascript
js 操作select与option(示例讲解)
2013/12/20 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
jquery实现无限分级横向导航菜单的方法
2015/03/12 Javascript
对javascript继承的理解
2016/10/11 Javascript
JS中使用正则表达式g模式和非g模式的区别
2017/04/01 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
JavaScript实现瀑布流图片效果
2017/06/30 Javascript
Node.js 使用递归实现遍历文件夹中所有文件
2017/09/18 Javascript
JS实现使用POST方式发送请求
2019/08/30 Javascript
[02:09:59]火猫TV国士无双dota2 6.82版本详解(下)
2014/09/29 DOTA
python装饰器使用方法实例
2013/11/21 Python
Python命令启动Web服务器实例详解
2017/02/23 Python
python监控linux内存并写入mongodb(推荐)
2017/09/11 Python
对Python中type打开文件的方式介绍
2018/04/28 Python
Python制作微信好友背景墙教程(附完整代码)
2019/07/17 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
Python list运算操作代码实例解析
2020/01/20 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
python中函数返回多个结果的实例方法
2020/12/16 Python
乌克兰电子和家用电器商店:Foxtrot
2019/07/23 全球购物
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
特色蛋糕店创业计划书
2014/01/28 职场文书
无毒社区工作方案
2014/05/23 职场文书
2014年煤矿安全工作总结
2014/12/04 职场文书
学习型家庭事迹材料
2014/12/20 职场文书
SpringBoot整合JWT的入门指南
2021/06/29 Java/Android
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
2022/04/07 Servers
Vue ECharts实现机舱座位选择展示功能
2022/05/15 Vue.js
windows11选中自动复制怎么开启? Win11自动复制所选内容的方法
2022/07/23 数码科技