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 相关文章推荐
JS+ACTIVEX实现网页选择本地目录路径对话框
Mar 18 Javascript
yarn与npm的命令行小结
Oct 20 Javascript
javascript删除html标签函数cIsHTML
Jan 09 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
Feb 08 Javascript
BootStrap与Select2使用小结
Feb 17 Javascript
JQuery实现定时刷新功能代码
May 09 jQuery
vue.js项目中实用的小技巧汇总
Nov 29 Javascript
javascript少儿编程关于返回值的函数内容
May 27 Javascript
vue双向绑定及观察者模式详解
Mar 19 Javascript
关于JS模块化的知识点分享
Oct 16 Javascript
Vue filter 过滤当前时间 实现实时更新效果
Dec 20 Javascript
javascript 设计模式之享元模式原理与应用详解
Apr 08 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
MySQL GBK→UTF-8编码转换
2007/05/24 PHP
jQuery UI 应用不同Theme的办法
2010/09/12 Javascript
客户端限制只能上传jpg格式图片的js代码
2010/12/09 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
关于js拖拽上传 [一个拖拽上传修改头像的流程]
2011/07/13 Javascript
JavaScript中的16进制字符(改进)
2011/11/21 Javascript
为什么要在引入的css或者js文件后面加参数的详细讲解
2013/05/03 Javascript
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
Jquery跳到页面指定位置的方法
2014/05/12 Javascript
js实现导航栏中英文切换效果
2017/01/16 Javascript
Node.js Express 框架 POST方法详解
2017/01/23 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
Vue自定义指令使用方法详解
2017/08/21 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
2017/11/22 Javascript
vue addRoutes实现动态权限路由菜单的示例
2018/05/15 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
pm2发布node配置文件ecosystem.json详解
2019/05/15 Javascript
vue+element项目中过滤输入框特殊字符小结
2019/08/07 Javascript
浅谈vue3中effect与computed的亲密关系
2019/10/10 Javascript
python基础教程之类class定义使用方法
2014/02/20 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
2016/07/08 Python
python使用pymysql实现操作mysql
2016/09/13 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
2019/01/07 Python
Python中三元表达式的几种写法介绍
2019/03/04 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
使用Pyhton集合set()实现成果查漏的例子
2019/11/24 Python
python 实现全球IP归属地查询工具
2020/12/18 Python
基本款天堂:Everlane
2017/05/13 全球购物
英国领先的在线高尔夫设备零售商:Golfgeardirect
2020/12/11 全球购物
北京华建集团SQL面试题
2014/06/03 面试题
市优秀教师事迹材料
2014/02/05 职场文书
人事专员岗位职责范本
2014/03/04 职场文书
最常使用的求职信
2014/05/25 职场文书
创业计划书之家教托管
2019/09/25 职场文书
用Python编写简单的gRPC服务的详细过程
2021/07/04 Python
Python人工智能之混合高斯模型运动目标检测详解分析
2021/11/07 Python