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 相关文章推荐
面向对象的javascript(笔记)
Oct 06 Javascript
jQuery实现可拖动的浮动层完整代码
May 27 Javascript
最好用的省市二级联动 原生js实现你值得拥有
Sep 22 Javascript
jquery获取div距离窗口和父级dv的距离示例
Oct 10 Javascript
js字母大小写转换实现方法总结
Nov 13 Javascript
javascript中的if语句使用介绍
Nov 20 Javascript
JavaScript学习笔记之基础语法
Jan 22 Javascript
有效提高JavaScript执行效率的几点知识
Jan 31 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
May 12 Javascript
javascript 中iframe高度自适应(同域)实例详解
May 16 Javascript
tangram.js库实现js类的方式实例分析
Jan 06 Javascript
vue删除html内容的标签样式实例
Sep 13 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
php验证手机号码(支持归属地查询及编码为UTF8)
2013/02/01 PHP
PHP实现无限级分类(不使用递归)
2015/10/22 PHP
php实现按天数、星期、月份查询的搜索框
2016/05/02 PHP
js验证表单大全
2006/11/25 Javascript
nicejforms——美化表单不用愁
2007/02/20 Javascript
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
JQuery获取当前屏幕的高度宽度的实现代码
2011/07/12 Javascript
JavaScript中的稀疏数组与密集数组[译]
2012/09/17 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
2013/01/17 Javascript
jquery事件与函数的使用介绍
2013/09/29 Javascript
现如今最流行的JavaScript代码规范
2014/03/08 Javascript
关于JS数组追加数组采用push.apply的问题
2014/06/09 Javascript
js实现网页标题栏闪烁提示效果实例分析
2014/11/20 Javascript
基于jquery css3实现点击动画弹出表单源码特效
2015/08/31 Javascript
简单谈谈node.js 版本控制 nvm和 n
2015/10/15 Javascript
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
js实现日历的简单算法
2017/01/24 Javascript
微信小程序对接七牛云存储的方法
2017/07/30 Javascript
Vue.js划分组件的方法
2017/10/29 Javascript
bootstrap响应式工具使用详解
2017/11/29 Javascript
微信小程序icon组件使用详解
2018/01/31 Javascript
js自定义trim函数实现删除两端空格功能
2018/02/09 Javascript
使用Bootstrap做一个朝代历史表
2019/12/10 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
2020/11/06 Javascript
[08:02]DOTA2牵红线 zhou神抱得美人归
2014/03/22 DOTA
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
Python实现获取操作系统版本信息方法
2015/04/08 Python
Python中的推导式使用详解
2015/06/03 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
2019/01/07 Python
logging level级别介绍
2020/02/21 Python
Python龙贝格法求积分实例
2020/02/29 Python
PUMA官方商城:世界领先的运动品牌之一
2016/11/16 全球购物
节约用水倡议书
2014/04/16 职场文书
2015年检验科工作总结
2015/04/27 职场文书
2015年学校管理工作总结
2015/07/20 职场文书
导游词之无锡梅园
2019/11/28 职场文书