如果从ajax生成,jquery自动完成无工作
自动完成它工作得很好,如果使用普通的静态html/php页面,这与预期一样 但我正在开发一个模块,该模块可以动态加载(AJAX)生成与上面相同的HTML到一个区域中。我无法让自动完成功能工作 你知道我该怎么解决这个问题吗?我到处都找遍了,什么都试过了,但显然还没有找到正确的解决方案如果从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() //
//
// 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之后,它无法正常工作,而且工作起来很有魅力…:)再次感谢。。