我们有一个带有jquery自动完成功能的rails 3.2.8 app。用户从列表中选择客户名称后,应用程序应触发事件(#invoice_customer_name_autocomplete)。选择后,将触发ajax更改事件。这就是应用程序应该做的所有事情。但是以下代码不能完成这项工作(错误:“t.item.customer未定义”)。用户甚至无法选择。文本框不会占用客户名称,屏幕卡住:
//for autocomplete
$(function() {
return $('#invoice_customer_name_autocomplete').autocomplete({
minLength: 1,
source: $('#invoice_customer_name_autocomplete').data('autocomplete-source'),
select: function(event, ui) {
$('#invoice_customer_name_autocomplete').val(ui.item.customer.name);
},
});
});
$(document).ready(function (){
$('#invoice_customer_name_autocomplete').change(function (){
//ajax call
$.get(window.location, $('form').serialize(), null, "script");
return false;
});
});
如果手动更改客户名称,则会触发.change事件。但是选择后它不会触发。上面的代码出了什么问题?
更新: 如果select可以在invoice_customer_name_autocomplete上触发更改事件,那么这就是我们想要的。尝试下面的代码没有成功(没有触发更改事件):
select: function(event, ui) {
$(this).trigger('change');
}
答案 0 :(得分:1)
您可能正在使用我无法确定的jQuery Autocomplete plugin,但您按照拨打jQuery UI autocomplete的方式调用它。
如果您使用第一个
建议:
使用正确的框架是一个工作的例子: jsFiddle
它与你的没什么不同,所以你应该记录ui对象以了解你为什么要访问一个null对象,最简单的方法是登录控制台整个对象并观察它
console.log(ui)
修改强>
关于onChange,您可以查看此帖子:trigger onchange event manually
希望它有所帮助!