自动填充不会在第一次输入时触发

时间:2014-10-31 16:41:45

标签: javascript jquery autocomplete

所以我用谷歌搜索,在这里搜索,到处去,我找不到答案。我正在使用jQuery UI自动完成功能来搜索项目ID数字列表。它们的长度可以是1 - 99999.

问题:

例如,当我输入'2'时,没有任何反应,然后我再次按退格键并再次键入'2',这次,从2开始的任何内容都显示在下面,并且事件显示在开发人员工具的“网络列表”中。此外,当我搜索1时,只显示1,但它没有执行搜索,它只是吐出输入值。但是当我点击退格并再次键入1时,搜索会触发,我得到的结果与我的2相同。通常无论我输入的是什么数字,它应该只是默认情况下应该不是吗?如何更正此问题并使我的自动填充功能正常工作。

CODE:

    $('.item-inventory').on('keyup', '#item_num', function(){
        //var search = $(this);
        var itemname;
        var itemprice;
        var itemdesc;
        $(this).autocomplete({
            delay : 100,
            source: function(request, response){
                $.ajax({
                    url: '../assets/server/orders/item_search.php',
                    dataType: 'JSON',
                    data: {search: request.term},
                    success: function (data){
                        var keys = data.search;
                    //  $('#item-name').val(data.search[0].item);
                    //  itemPrice = data.search[0].price;
                    //  itemDesc = data.search[0].desc;
                        response($.map( keys, function(i){
                            return{
                                label : i.id
                            };

                        }));

                    }
                });
            },
            minLength : 1
        });
        //$('#item-search-results').removeClass('hidden');
        $(this).on('autocompleteselect', function(event, ui){
            $('#item-search-results').removeClass('hidden');
        });
    });

4 个答案:

答案 0 :(得分:1)

基本上你是在第一次按键后连接自动完成(这对于第一次按键来说太迟了)。您还在每次按键时重新连接它。

您需要在启动时将自动完成功能连接到任何相关元素。

e.g。把它放在密钥处理程序之外:

    $('.item-inventory #item_num').autocomplete({
        delay : 100,
        source: function(request, response){
            $.ajax({
                url: '../assets/server/orders/item_search.php',
                dataType: 'JSON',
                data: {search: request.term},
                success: function (data){
                    var keys = data.search;
                //  $('#item-name').val(data.search[0].item);
                //  itemPrice = data.search[0].price;
                //  itemDesc = data.search[0].desc;
                    response($.map( keys, function(i){
                        return{
                            label : i.id
                        };

                    }));

                }
            });
        },
        minLength : 1
    });

答案 1 :(得分:0)

您可以在此处添加更多活动 keydown

$('.item-inventory').on('keyup keydown', '#item_num', function(){
........
});

答案 2 :(得分:0)

If not works Properly then At Page load call the autocomplete function with empty array of strings. E.g. $("input").each(function () { $(this).autocomplete({ src: [] }); }); Now this will work at first keypress also. Best of Luck.

答案 3 :(得分:0)

请在就绪函数中初始化自动完成。 喜欢:$(Id).autocomplete();