JS实现自动补全功能

来个直接暴力的吧,废话不说了。直接上代码了。

写的可能有问题,希望大家能够指出,大神勿喷。。。

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>
<html>
<head>
    <title>js/jQuery实现类似百度搜索功能</title>
    <meta name='Author' content='Michael'>
    <meta name='Keywords' content='js/jQuery实现类似百度搜索功能'>
    <meta name='Description' content='js/jQuery实现类似百度搜索功能,可用键盘控制'>
    <meta http-equiv='content-type' content='text/html; charset=UTF-8' />
    <script type='text/javascript' src='http://code.jquery.com/jquery-1.8.3.js'></script>
    <style type='text/css'>
        #container{
            position:absolute;
            left:50%;
            top: 40%;
        }
        #content{
            float:left;
            position:relative;
            right:50%;
        }
        input{
            border:2px solid gold;
            width:288px;
            height:30px;
            font-size:16px;
            padding:0 5px;
            line-height:30px;
        }
        .item{
            padding:3px 5px;
            cursor:pointer;
        }
        .addbg{
            background:#87A900;
        }
        .first{
            border:solid #87A900 2px;
            width:300px;
        }
        #append{
            border:solid #87A900 2px;
            border-top:0;
            display:none;
            position: relative;
            z-index: 111;
        }
    </style>
</head>
<body>
<div id='container'>
    <div id='content'>
        <div class='first'><input id='kw' onKeyup='getContent(this);' οnfοcus='getContent(this);' /></div>
        <div id='append'></div>
    </div>
</div>
</body>
</html>
<!--<script src="http://www.jq22.com/jquery/jquery-1.10.2.js"></script>-->
<script type='text/javascript'>
    var data = [
                'hello,你好',
                'javascript',
                'Python',
                'xshell',
                'css',
                'html',
                '百度地图',
                '高德地图',
                'nodejs',
                'vuejs'
            ];
    $(document).ready(function(){
        $(document).keydown(function(e){
            e = e || window.event;
            var keycode = e.which ? e.which : e.keyCode;
            if(keycode == 38){
                if(jQuery.trim($('#append').html())==''){
                    return;
                }
                movePrev();
            }else if(keycode == 40){
                if(jQuery.trim($('#append').html())==''){
                    return;
                }
                $('#'+n).blur();
                if($('.item').hasClass('addbg')){
                    moveNext();
                }else{
                    $('.item').removeClass('addbg').eq(0).addClass('addbg');
                }
            }else if(keycode == 13){
                dojob();
            }
        });
        var movePrev = function(){
            $('#'+n).blur();
            var index = $('.addbg').prevAll().length;
            if(index == 0){
                $('.item').removeClass('addbg').eq($('.item').length-1).addClass('addbg');
            }else{
                $('.item').removeClass('addbg').eq(index-1).addClass('addbg');
            }
        }
        var moveNext = function(){
            var index = $('.addbg').prevAll().length;
            if(index == $('.item').length-1){
                $('.item').removeClass('addbg').eq(0).addClass('addbg');
            }else{
                $('.item').removeClass('addbg').eq(index+1).addClass('addbg');
            }
        };
        var dojob = function(){
            $('#'+n).blur();
            var value = $('.addbg').text();
            $('#'+n).val(value);
            $('#append').hide().html('');
        }
    });
    function getContent(obj){
        var kw = jQuery.trim($(obj).val());
        if(kw == ''){
            $('#append').hide().html('');
            return false;
        }
        var html = '';
        for (var i = 0; i < data.length; i++) {
            if (data[i].indexOf(kw) >= 0) {
                html = html + "<div class='item' οnmοuseenter='getFocus(this)' onClick='getCon(this);'>" + data[i] + "</div>"
            }
        }
        if(html != ''){
            $('#append').show().html(html);
        }else{
            $('#append').hide().html('');
        }
    }
    function getFocus(obj){
        $('.item').removeClass('addbg');
        $(obj).addClass('addbg');
    }
    function getCon(obj){
        var value = $(obj).text();
        $('#'+n).val(value);
        $('#append').hide().html('');
    }
</script>

后来又写了一篇,大家可以参考一下 http://write.blog.csdn.net/postedit/72677627

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值