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下实现等待指定元素加载完毕(可改成纯js版)
Jul 11 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
Aug 22 Javascript
基于JavaScript实现移动端TAB触屏切换效果
Oct 20 Javascript
JS实现响应鼠标点击动画渐变弹出层效果代码
Mar 25 Javascript
jquery表单插件Autotab使用方法详解
Jun 24 Javascript
Vuejs 组件——props数据传递的实例代码
Mar 07 Javascript
Vuex之理解Getters的用法实例
Apr 19 Javascript
vue-cli单页应用改成多页应用配置详解
Jul 14 Javascript
Vue-Router基础学习笔记(小结)
Oct 15 Javascript
小程序api实现promise封装过程解析
Nov 21 Javascript
解决vuex数据页面刷新后初始化操作
Jul 26 Javascript
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
Dec 19 Vue.js
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
个人写的PHP验证码生成类分享
2014/08/21 PHP
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
PHP连接access数据库
2015/03/27 PHP
PHP常见的6个错误提示及解决方法
2016/07/07 PHP
PHP实现常用排序算法的方法
2020/02/05 PHP
极酷的javascirpt,让你随意编辑任何网页
2007/02/25 Javascript
文本框input聚焦失焦样式实现代码
2012/10/12 Javascript
关于javascript中的typeof和instanceof介绍
2012/12/04 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
2014/10/30 Javascript
JavaScript代码复用模式详解
2014/11/07 Javascript
JS使用cookie设置样式的方法
2016/06/30 Javascript
详解vue嵌套路由-params传递参数
2017/05/23 Javascript
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
详解使用vuex进行菜单管理
2017/12/21 Javascript
Vue-cli3项目引入Typescript的实现方法
2019/10/18 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
Python装饰器使用实例:验证参数合法性
2015/06/24 Python
python列出目录下指定文件与子目录的方法
2015/07/03 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
2018/10/22 Python
python如何获取列表中每个元素的下标位置
2019/07/01 Python
Django 开发环境与生产环境的区分详解
2019/07/26 Python
Python pickle模块实现对象序列化
2019/11/22 Python
Python基于yield遍历多个可迭代对象
2020/03/12 Python
Python中使用socks5设置全局代理的方法示例
2020/04/15 Python
Python SMTP配置参数并发送邮件
2020/06/16 Python
python中tkinter窗口位置\坐标\大小等实现示例
2020/07/09 Python
Python爬虫基于lxml解决数据编码乱码问题
2020/07/31 Python
利用SVG和CSS3来实现一个炫酷的边框动画
2015/07/22 HTML / CSS
Shein英国:女性时尚网上商店
2019/04/10 全球购物
保密承诺书范文
2014/03/27 职场文书
个人工作主要事迹
2014/05/08 职场文书
工商干部先进事迹
2014/05/14 职场文书
关于十八大的演讲稿
2014/09/15 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
初中教师个人总结
2015/02/10 职场文书
笔记本自带的win11如何跳过联网激活?
2022/04/20 数码科技