大概是个delegation
问题。
添加了自动完成传播示例
//build the autocomplete function, sans source
$('#servicename').autocomplete({
minLength: 2
});
var theArray = [];
$('body').on('change', 'select', function(){
$.ajax({
url: 'index.php?key='+$(this).val(),
dataType: 'json/jsonp',
success: function(data){
//i don't know what the array you return looks like, but autocomplete expets a key:value relationship
$.each(data, function(key, value){
theArray.push({label: value, value: key});
});
//a custom function to pass the array into
startAutoComplete(theArray);
}
});
});
function startAutoComplete(array){
$('#servicename').autocomplete('option', 'source', array);
}
使用上面的代码,我们实例化自动完成实例,我们只识别我们需要的参数,不包括源。
然后我们定义一个空数组,我们可以将 ajax 请求返回的数据推送到该数组中。
在我们的 select 函数中,我们将值传递给要解析的服务器。我不知道您是否期望 JSON/JSONP 格式,所以您必须自己更改它。
在success:function(data)
我们从服务器取回请求时,最好响应是json_encode
'ed。此外,当我们将值推入数组时,最好使用key -> value
关系。自动完成允许 alabel
和 avalue
像function(event, ui){ //do stuff with ui.item.label / ui.item.value}
'
我们在 的范围之外声明一个未初始化的函数document.ready
,并将数组传递给函数。在这个函数中,我们改变了自动完成的来源。
希望这一切都有意义。