我有一个问题要问你......
我有一个自动完成一些文本的功能,在选择我想从函数返回2值...这是我的代码:
function autoComp(field, srt, file, act) {
$( field ).autocomplete({
minLength: srt,
source: function( request, response ) {
$.ajax({
url: file,
type: 'post',
dataType: "json",
data: {'azione':act, 'txt':request.term},
success: function(data) {
response( $.map( data.result, function( item ) {
return {
label: item.text,
value: item.text,
id: item.id
}
}));
}
});
},
select: function( event, ui ) {
var obj = {};
obj[0] = ui.item.id;
obj[1] = ui.item.label;
return obj;
}
});
}
$(document).on('focus', '.farmCompl', function(){
obj = autoComp(this, 3, 'search.php', 'music');
if(obj){
alert(obj[0]);
alert(obj[1]);
}
});
autoComp(...)想成为一个从我项目中的很多地方调用的通用函数.... 'field'是要完成的选择器(例如'#text1'),srt是自动完成的开始.... 事实上,Ajax正常工作自动完成呈现数据库选项...... 问题在于选择选项.... 当我选择该选项时,我希望自动完成将id和label的值返回给函数或调用autoComp(...)的事件 我希望已经清楚了 再见
答案 0 :(得分:0)
您可以只使用内置于自动完成功能的侦听器,而不是尝试为select事件设置另一个侦听器。只需使用已经在'select'上调用的函数来执行您想要执行的操作。
我希望这会有所帮助。
function autoComp(field, srt, file, act) {
$( field ).autocomplete({
minLength: srt,
source: function( request, response ) {
$.ajax({
url: file,
type: 'post',
dataType: "json",
data: {'azione':act, 'txt':request.term},
success: function(data) {
response( $.map( data.result, function( item ) {
return {
label: item.text,
value: item.text,
id: item.id
}
}));
}
});
},
select: function( event, ui ) {
var obj = [];
obj[0] = ui.item.id;
obj[1] = ui.item.label;
alert(obj[0]);
alert(obj[1]);
}
});
}
顺便说一句,如果你是creating an array,你应该在声明和[0]..
表示法中使用方括号来获取值。如果要创建对象,请在声明中使用花括号并命名为“。”。把事情搞清楚的参数。例如,您可以将对象声明为var obj = {}
,但随后将其指定为obj.id = ui.item.id;
等。有关详情,请阅读What is the difference between an array and an object。