如果从ajax生成,jquery自动完成无工作

如果从ajax生成,jquery自动完成无工作,jquery,ajax,autocomplete,Jquery,Ajax,Autocomplete,自动完成它工作得很好,如果使用普通的静态html/php页面,这与预期一样 但我正在开发一个模块,该模块可以动态加载(AJAX)生成与上面相同的HTML到一个区域中。我无法让自动完成功能工作 你知道我该怎么解决这个问题吗?我到处都找遍了,什么都试过了,但显然还没有找到正确的解决方案 // // this is the ajax code load dynamic contents in a #display_area // from onclick=selected_purchase() //

自动完成它工作得很好,如果使用普通的静态html/php页面,这与预期一样

但我正在开发一个模块,该模块可以动态加载(AJAX)生成与上面相同的HTML到一个区域中。我无法让自动完成功能工作

你知道我该怎么解决这个问题吗?我到处都找遍了,什么都试过了,但显然还没有找到正确的解决方案

//
// this is the ajax code load dynamic contents in a #display_area
// from onclick=selected_purchase()
//

    function selected_purchase() {
      var fields = $(":input").serialize();
        $.ajax({ 
        url: "purchase4",
        type: "POST",
        dataType: "html",
        data: fields ,
        beforesend: function(a) {
            // before send process here
            showBusy();
        },
        success: function(html) {
            // success process here ...
            processForm(html);

        }   
    });

      }


//
// this is the autocomplete code  
//

$( "#supplier" ).autocomplete({ //the recipient text field with id #supplier
        source: function( request, response ) {
            $.ajax({
                url: "search_supplier",
                dataType: "json",
                data: request,
                success: function(data){
                    if(data.response == 'true') {
                       response(data.message);
                    }
                }
            });
        },
        minLength: 2,
        select: function( event, ui ) {
            // Do something extra on select...
                // add user id to hidden input    

            $('input[name="name"]').val(ui.item.value);
            $('input[name="sl"]').val(ui.item.sl_id);
            return false;
        },

    });

您可能必须在加载内容后初始化插件实例

$("#container").load('some url', function() {
    $(this).find('#autocomplete').autocomplete();
});
根据加载内容所使用的方法($.ajax、.load()…),此代码可能会有所不同。常见的做法是在异步请求完成后执行的回调中初始化插件,通常称为“成功”回调


现在我们有了您的代码示例,下面是您应该做的:

function selected_purchase() {
    var fields = $(":input").serialize();
    $.ajax({
        ...
        success: function(html) {
            // success process here ...
            processForm(html);

            // assuming "processForm" append the "html" to the DOM
            // you can now call autocomplete
            $( "#supplier" ).autocomplete({
                ...
            });
        }
    });
}​
你的Php脚本(我猜)正在发送JSon?这是常见的问题,你的外流应该是这样的

['toto','titi','tata']

您可以使用
echo json\u encode($myArrayWithStringValues)
来获得相同的结果。

如果没有看到您的代码,就很难帮上忙,您能发布到目前为止的内容吗?谢谢,添加了一些代码。如果processForm()是附加新html的方法,那么是的。@DidierGhys我已经按照您的建议实现了$(“#PaymentIn”).load('/Bank/_PaymentIn/',函数(){$(this.find('#ChequeNo').autocomplete();})$(“input#ChequeNo”).autocomplete({……但这不起作用……有什么想法吗?@Sadaquat我不能帮你回答“不起作用”。控制台中是否出现错误?是否尝试在回调中调试以检查是否可以找到要使用的元素?数据是否正确加载?@DiDiierghys谢谢您的解决方案,但使用了一些不同的语法,原因与您所说的相同,但我在一个函数中敲打了一个自动完成,所以我刚刚调用了该函数在使用ajax之后,它无法正常工作,而且工作起来很有魅力…:)再次感谢。。