二五、vue仿百度搜索框

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>仿百度搜索框</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <style>
        .bg{
            background: #cccccc;
        }
    </style>
    <script src="vue.js"></script>
    <script src="vue-resource.js"></script>
</head>
<body>
<div>
    <input type="text" placeholder='请输入搜索的内容。。。' v-model='info' @keyup='search($event)' @keydown.down='change()' @keydown.up.provent='up()'>
    <ul>
        <li v-for='v in myData' :class='{bg:$index==index}'>{{v}}</li>
    </ul>
    <h1 v-show='myData.length==0'>暂无数据。。。</h1>
</div>

<script>
    var myDemo= new Vue({
        el:'body',
        data:{
            myData:[],   //储存搜索到的内容
            info:'',     //input框里输入的内容
            index:-1     //索引 实现上下选择
        },
        methods:{
            search:function (e) {

//                当按上下键时返回
                if(e.keyCode==38||e.keyCode==40)return;

//                按回车时搜索
                if(e.keyCode==13){
//                    新的页面打开
                    window.open('https://www.baidu.com/s?wd='+this.info);
                    this.info='';
                }

//              跨域调用百度搜索接口
                this.$http.jsonp('https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su',{
                    wd:this.info
                },{
                    jsonp:'cb'  //必须要有jsonp 后面参数根据实际需求写
                }).then(function (data) {  //成功是返回的内容
                    this.myData=data.data.s;  //储存返回的内容
                },function () {

                })
            },
//            按下键往下选择
            change:function () {
                this.index++;
                this.info=this.myData[this.index];  //输入框显示选择的内容
                if(this.index==this.myData.length)this.index=-1;  //当选到最后一个时索引变为-1

            },
//            按上键往上选择
            up:function () {
                this.index--;
                this.info=this.myData[this.index];
                if(this.index==-1)this.index=this.myData.length-1;
            }
        }
        }
    )
</script>
</body>
</html>



















  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值