为什么不是';使用jQuery自动完成插件调用我的自定义formatResult函数吗?
我正在使用autocompletejquery插件()调用返回json的服务。我的插件使用json结果,一切正常,execpt我的自定义formatResult函数从未被调用。我想使用该函数来捕获用户从结果列表中选择,以填充页面上的各种其他字段为什么不是';使用jQuery自动完成插件调用我的自定义formatResult函数吗?,jquery,autocomplete,Jquery,Autocomplete,我正在使用autocompletejquery插件()调用返回json的服务。我的插件使用json结果,一切正常,execpt我的自定义formatResult函数从未被调用。我想使用该函数来捕获用户从结果列表中选择,以填充页面上的各种其他字段 $(document).ready(function() { $("#vendorname").autocomplete("/Vendor/Search", { dataType: 'json', parse: f
$(document).ready(function() {
$("#vendorname").autocomplete("/Vendor/Search", {
dataType: 'json',
parse: function(data) {
var rows = new Array();
for (var i = 0; i < data.length; i++) {
rows[i] = { data: data[i], value: data[i].Name, result: data[i].Name };
}
return rows;
},
formatItem: function(row, i, n) {
return row.RepName + ' (' + row.VendorId + ')';
},
formatResult: function(row, i, n) {
return '(formatResult) ' + row.Name;
},
width: 200,
mustMatch: false,
scroll: true,
scrollHeight: 300
});
});
所以
1) 为什么格式化结果从未命中
2) 一旦用户从结果中选择了一个项目,是否有更好的方法来获取对象属性?格式结果只会更改文本框中显示的内容。如果要截取对输入值的更改,请执行以下操作
$("#vendorname").result(function(event, data, formatted){
//do something
});
这里需要注意的是,
formatResult
和formatItem
在jQuery的核心自动完成中似乎不再有效/存在。相反,我使用了和我自己的代码的组合。这是我的获奖代码。此特定函数负责值和标签,但您可以放置自己的任何函数:
$(document).ready(function(){
$('#TradeFromUserId').autocomplete({
minLength: 3,
source: '/my.json',
select: function(event, ui {
var selectedObj = ui.item;
$('input#TradeFromUserId').val(selectedObj.label);
$('input#TradeFromUserIdHidden').val(selectedObj.value);
return false;
focus: function(event, ui){
var selectedObj = ui.item;
$('input#TradeFromUserId').val(selectedObj.label);
$('input#TradeFromUserIdHidden').val(selectedObj.value);
return false;
}
});
});
$(document).ready(function(){
$('#TradeFromUserId').autocomplete({
minLength: 3,
source: '/my.json',
select: function(event, ui {
var selectedObj = ui.item;
$('input#TradeFromUserId').val(selectedObj.label);
$('input#TradeFromUserIdHidden').val(selectedObj.value);
return false;
focus: function(event, ui){
var selectedObj = ui.item;
$('input#TradeFromUserId').val(selectedObj.label);
$('input#TradeFromUserIdHidden').val(selectedObj.value);
return false;
}
});
});