input框实现自动补全功能

需求:输入车架号前几位,自动弹出匹配到的车架号。

方案一:原生js

1. html

注意:关掉autocomplete属性,不然会自动匹配之前输入的内容。

2. js

编写定时器,2秒后调用;

调用接口,查询匹配到的数据append到li;

编写点击事件,自动填充Input框为选中内容;

方案二:使用js autocomplete()方法;

source为查询结果。

附部分代码:

html:

<div class="columns pull-left col-md-1.5"
     style="margin-left: 10px;">
    <input id="inputValue" type="text" class="form-control"
           placeholder="请输入"
           autocomplete="off" οnkeyup="delayGetVinList()">
    <ul class="dropdown-menu" id="fuzzyQueryUl"
        style="left: 12%">
    </ul>
</div>

js:

function delayGetVinList() {
    var timer;
    if (timer) {
        window.clearTimeout(timer);
    }
    timer = window.setTimeout(getVinList, 2000);
}
function getVinList() {
    var _modelType = $('#selectType').val();
    if (_modelType != '0') {
        return;
    }
    var _val = $('#inputValue').val();
    if (_val == '') {
        $('#fuzzyQueryUl li').remove();
        $('#fuzzyQueryUl').hide();
        return;
    }

    $
        .ajax({
            type: 'get',
            url: 'xxxx',
            data: {
                vin: $('#inputValue').val()
            },
            async: false,
            success: function (result) {
                $('#fuzzyQueryUl li').remove();
                var _length = result.length;
                var _times = 0;
                var _resulto = result[0];
                if (_length > 0 && _resulto != '') {
                    $('#fuzzyQueryUl').show();
                    if (_length > 10) {
                        _times = 10;
                    } else {
                        _times = _length;
                    }
                    var styleResult = '';
                    for (var i = 0; i < _times; i++) {
                        var _result = result[i] + '';
                        var _li = '<li><a href="#" οnclick="fuzzyQueryResultClick(\''
                            + _result + '\')"</a>' + _result + '</li>';
                        $('#fuzzyQueryUl').append(_li);
                    }
                } else {
                    $('#fuzzyQueryUl').hide();
                    return;
                }
            },
            error: function () {
            }
        });
}
function fuzzyQueryResultClick(val) {
    $('#inputValue').val(val);
    $('#fuzzyQueryUl').hide();
    return;
}
发布了6 篇原创文章 · 获赞 5 · 访问量 328

猜你喜欢

转载自blog.csdn.net/MaxVelika/article/details/103970652
今日推荐