vue实现百度搜索功能


Posted in Javascript onDecember 28, 2020

本文实例为大家分享了vue实现百度搜索功能的具体代码,供大家参考,具体内容如下

最终效果:

vue实现百度搜索功能

Baidusearch.vue所有代码:

<template>
 <div>
 <div class="container" id="app">
 <div class="page-header">
  <h2 class=" text-center text-primary">百度搜索案例</h2>
 </div>
 <form action="">
  <div class=" form-group">
  <input v-model="wd" @keyup="keyup($event)" @keydown="keydown($event)" type="text" class="form-control" />
  <ul class="list-group">
  <li class="list-group-item list-group-item-text" v-for="(item,index) in arr" :class="{'list-group-item-info':index==listIndex}" @click="click($event)">{{item}}</li>
  </ul>
  </div>
 </form>
 </div>
 </div>
</template>
 
<script>
 export default {
 name: "Baidusearch",
 data(){
  return{
  wd:'',//搜索的关键词
  arr:[],//用于储存关键词的搜索词条
  listIndex:-1//设置初始索引,数组从0开始,因此初始成-1
  }
 },
 methods:{
 //这个函数我们在input标签输入关键词的时候不断的给百度服务器发送请求获取搜索词条,并且不断的复制给data中的数组arr
 keyup(event){
  //如果我按的是上下键,那么就不发送请求了
  console.log(event);
  if(event.keyCode==38||event.keyCode==40||event.keyCode==13) return ;
  var url="https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su"
  this.$http.jsonp(url,{
  params:{
  wd:this.wd
  },
  jsonp:'cb'
  }).then(res=>{
  console.log(res);
  this.arr=res.data.s;//把百度服务器返回的数据传给arr数组
  })
 },
 //监听鼠标的点击事件
 //如果鼠标点击某一行的文字,则点击事件中的event.explicitOriginalTarget.data代表关键词
 //如果点击某一行的空白处,则点击事件中的event.explicitOriginalTarget.innerText代表关键词
 //大家可以通过console.log(event)来查看关键词所在的位置
 click(event){
  console.log(event);
  if(event.explicitOriginalTarget.data!=undefined){
  this.wd=event.explicitOriginalTarget.data;
  window.open("https://www.baidu.com/s?wd="+this.wd);
  }else if(event.explicitOriginalTarget.innerText!=undefined){
  this.wd=event.explicitOriginalTarget.innerText;
  window.open("https://www.baidu.com/s?wd="+this.wd);
  }
 },
 //监听键盘的事件
 //如果按down,则增加当前listIndex+1,因此arr[this.listIndex]就能代表当前的词条
 //我们通过对listIndex的修改来得到当前词条在arr中的索引,然后就可以得到词条的具体信息,然后发送请求了
 keydown(event){
  console.log(event);
  //下键:40 上键:38
  if(event.keyCode==38){
  //按的上键
  this.listIndex--;
  if(this.listIndex<0){
  this.listIndex=this.arr.length-1;
  }
  this.wd=this.arr[this.listIndex];
  }
  else if(event.keyCode==40){
  //说明你按的是下键
  this.listIndex++;
  if(this.listIndex>this.arr.length-1){
  this.listIndex=0;
  }
  this.wd=this.arr[this.listIndex];
  }else if(event.keyCode==13){
  //如果你按的是enter,那么就跳转到百度搜索结果
  window.open("https://www.baidu.com/s?wd="+this.wd);
  }
 
 }
 }
 }
</script>
 
<style scoped>
 
</style>

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

Javascript 相关文章推荐
分享20多个很棒的jQuery 文件上传插件或教程
Sep 04 Javascript
js 函数调用模式小结
Dec 26 Javascript
javascript实现日历控件(年月日关闭按钮)
Dec 12 Javascript
浅谈javascript中基本包装类型
Jun 03 Javascript
JS实现自动变换的菜单效果代码
Sep 09 Javascript
jquery动画效果学习笔记(8种效果)
Nov 13 Javascript
javascript实现添加附件功能的方法
Nov 18 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
Apr 24 jQuery
浅谈vue实现数据监听的函数 Object.defineProperty
Jun 08 Javascript
深入浅析JavaScript中的RegExp对象
Sep 18 Javascript
javascript中神奇的 Date对象小结
Oct 12 Javascript
ES6 proxy和reflect的使用方法与应用实例分析
Feb 15 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
Apr 10 #Javascript
Vue 中使用富文本编译器wangEditor3的方法
Sep 26 #Javascript
react实现同页面三级跳转路由布局
Sep 26 #Javascript
vue轮播组件实现$children和$parent 附带好用的gif录制工具
Sep 26 #Javascript
小程序调用微信支付的方法
Sep 26 #Javascript
细说webpack6 Babel的使用详解
Sep 26 #Javascript
微信小程序实现拖拽功能
Sep 26 #Javascript
You might like
阿拉伯的咖啡与水烟
2021/03/03 咖啡文化
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
老鱼 浅谈javascript面向对象编程
2010/03/04 Javascript
JavaScript和ActionScript的交互实现代码
2010/08/01 Javascript
JS分割字符串并放入数组的函数
2011/07/04 Javascript
js格式化时间和js格式化时间戳示例
2014/02/10 Javascript
完美兼容各大浏览器的jQuery插件实现图片切换特效
2014/12/12 Javascript
jQuery学习笔记之创建DOM元素
2015/01/19 Javascript
JQuery异步提交表单与文件上传功能示例
2017/01/12 Javascript
Bootstrap 响应式实用工具实例详解
2017/03/29 Javascript
实例详解JavaScript中setTimeout函数的执行顺序
2017/07/12 Javascript
angularjs实现柱状图动态加载的示例
2017/12/11 Javascript
node跨域转发 express+http-proxy-middleware的使用
2018/05/31 Javascript
JavaScript中set与get方法用法示例
2018/08/15 Javascript
微信小程序canvas分享海报功能
2019/10/31 Javascript
Python正则表达式如何进行字符串替换实例
2016/12/28 Python
Django 数据库同步操作技巧详解
2019/07/19 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
python 实现二维字典的键值合并等函数
2019/12/06 Python
django序列化时使用外键的真实值操作
2020/07/15 Python
Python 求向量的余弦值操作
2021/03/04 Python
老海军美国官网:Old Navy
2016/09/05 全球购物
Steve Madden官网:美国鞋类品牌
2017/01/29 全球购物
英国网上电器商店:Electricshop
2020/03/15 全球购物
JSF如何进行表格处理及取值
2012/08/06 面试题
DBA的职责都有哪些
2012/05/16 面试题
硕士研究生个人求职信
2013/12/04 职场文书
学雷锋活动倡议书
2014/08/30 职场文书
2014党员自我评议表范文
2014/09/20 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
2015秋季幼儿园开学寄语
2015/03/25 职场文书
nginx配置proxy_pass中url末尾带/与不带/的区别详解
2021/03/31 Servers
关于SpringBoot 使用 Redis 分布式锁解决并发问题
2021/11/17 Redis
SpringDataJPA在Entity中常用的注解介绍
2021/12/06 Java/Android
python使用shell脚本创建kafka连接器
2022/04/29 Python
volatile保证可见性及重排序方法
2022/08/05 Java/Android