【问题标题】:Using jquery & ajax autocomplete when generating the input after the page is ready在页面准备好后生成输入时使用 jquery 和 ajax 自动完成
【发布时间】:2016-03-10 23:15:21
【问题描述】:

我在论坛上搜索了这个,我发现了这个:autocomplete not working with ajax generated textbox 和这个:jQuery autocomplete failing after dynamically adding additional text input field

但每次,它都是文档就绪功能,而我的功能是在 keyup 上。我认为这很重要。

情况如下:我有这些函数来处理自动完成输入。它使用 jQuery 和 Ajax:

var truid = "";

$(function(){
    $(".autocomp").keyup(function() {
        var realid = $(this).attr('id');
        var searchid = $(this).val();
        var dataString = 'search=' + searchid;

        if(searchid != '') {
            $.ajax({
                type: "POST",
                url: "ajax_complete.php",
                data: dataString,
                cache: false,
                success: function(html) {
                    $("#result_"+realid).html(html).show();
                    truid=realid;
                }
            });
        }
        return false;    
    });

    $(".autoresult").on("click",function(e) {
        var $clicked = $(e.target);
        var $name = $clicked.find('.name').html();
        var $id = $clicked.find('.auto_id').text();
        var decoded = $("<div/>").html($name).text();
        $('#' + truid).val(decoded);
        $('#' + truid + "_true").val($id);
    });

    $(document).on("click", function(e) { 
        var $clicked = $(e.target);
        if (! $clicked.hasClass("autocomp")) {
            $("#result_" + truid).fadeOut(); 
        }
    });

    $('.autocomp').click(function() {
        truid = $(this).attr('id');
        $("#result_" + truid).fadeIn();
    });
});

我通常将此输入用于此自动完成功能:

<input type="text" class="autocomp" id="uniqueid" />
<input type="hidden" id="uniqueid_true" name="uniqueid" />
<div class="autoresult" id="result_uniqueid"></div>

当我在文档准备好时将这段代码直接放在 html 中时,它可以正常工作。

但是当我在 ajax 中生成这些输入时,自动完成功能不起作用,当我提出建议时没有任何反应。

我如何让它工作?

【问题讨论】:

    标签: jquery ajax autocomplete


    【解决方案1】:

    keyup-function 执行与 click-functions 相同的操作:

    而不是...:

    $(".autocomp").keyup(function() { [...] });
    

    写...:

    $(".autocomp").on("keyup", function() { [...] });
    

    【讨论】:

    • 不幸的是,它没有完成工作......它仍然是一样的:使用 DOM 就绪输入,而不是创建的 ajax......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2016-11-07
    • 1970-01-01
    相关资源
    最近更新 更多