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 相关文章推荐
基于jQuery的自动完成插件
Feb 03 Javascript
js验证IP及子网掩码的合法性有效性示例
Apr 30 Javascript
javascript中2个感叹号的用法实例详解
Sep 04 Javascript
jQuery 中$(this).index与$.each的使用指南
Nov 20 Javascript
javascript实现表格排序 编辑 拖拽 缩放
Jan 02 Javascript
jQuery qrcode生成二维码的方法
Apr 03 Javascript
详解Vue用axios发送post请求自动set cookie
May 10 Javascript
bootstrap是什么_动力节点Java学院整理
Jul 14 Javascript
100行代码实现一个vue分页组功能
Nov 06 Javascript
JavaScript变速动画函数封装添加任意多个属性
Apr 03 Javascript
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
Jul 03 jQuery
微信小程序实现简单文字跑马灯
May 26 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
ajax缓存问题解决途径
2006/12/06 PHP
php递归获取目录内文件(包含子目录)封装类分享
2013/12/25 PHP
php获取指定数量随机字符串的方法
2017/02/06 PHP
用php实现分页效果的示例代码
2020/12/10 PHP
Jquery实现的tab效果可以指定默认显示第几页
2013/10/16 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
jquery动感漂浮导航菜单代码分享
2020/04/15 Javascript
canvas绘制的直线动画
2017/01/23 Javascript
完美实现js焦点轮播效果(二)(图片可滚动)
2017/03/07 Javascript
详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)
2017/07/13 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
使用Bootrap和Vue实现仿百度搜索功能
2017/10/26 Javascript
vue配置多页面的实现方法
2018/05/22 Javascript
深入理解JavaScript的async/await
2018/08/05 Javascript
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
2018/08/19 Javascript
Vue+Element UI+vue-quill-editor富文本编辑器及插入图片自定义
2019/08/20 Javascript
原生js实现购物车
2020/09/23 Javascript
[52:07]完美世界DOTA2联赛PWL S3 LBZS vs access 第二场 12.10
2020/12/13 DOTA
python实现解数独程序代码
2017/04/12 Python
Python中defaultdict与lambda表达式用法实例小结
2018/04/09 Python
Python爬虫实战之12306抢票开源
2019/01/24 Python
Python 虚拟空间的使用代码详解
2019/06/10 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
python模拟实现斗地主发牌
2020/01/07 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
python目标检测给图画框,bbox画到图上并保存案例
2020/03/10 Python
html5调用app分享功能示例(WebViewJavascriptBridge)
2018/03/21 HTML / CSS
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
Simons官方网站:加拿大时尚零售商
2020/02/20 全球购物
领导班子四风问题个人对照检查材料
2014/10/04 职场文书
2015年教师党员自我评价材料
2015/03/04 职场文书
电力安全教育培训心得体会
2016/01/11 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript
python3.9之你应该知道的新特性详解
2021/04/29 Python
5人制售《绝地求生》游戏外挂获利500多万元 被判刑
2022/03/31 其他游戏
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫