0

我们有一个带有 jquery 自动完成功能的 rails 3.2.8 应用程序。用户从列表中选择客户名称后,应用程序应触发事件 (#invoice_customer_name_autocomplete)。选择后,将触发 ajax 更改事件。这就是应用程序应该做的所有事情。但是下面的代码不能完成这项工作(错误:“t.item.customer is undefined”)。用户甚至无法选择。文本框不会输入客户名称并且屏幕卡住:

//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 事件。但是选择后它不会触发。上面的代码有什么问题?

更新:如果选择可以触发 invoice_customer_name_autocomplete 上的更改事件,那么这就是我们想要的。尝试以下代码但未成功(未触发更改事件):

select: function(event, ui) {
   $(this).trigger('change');
}
4

1 回答 1

1

您可能正在使用我无法确定的jQuery Autocomplete 插件,但您调用它的方式与调用jQuery UI autocomplete的方式相同。

如果您使用的是第一个

建议:

  1. 在 jQuery UI 中使用自动完成而不是自动完成插件。后者已弃用。

在这里使用正确的框架是它工作的一个例子: jsFiddle

它与您的没有什么不同,所以问题是您应该记录 ui 对象以了解您访问空对象的原因,最简单的方法是登录控制台并观察整个对象。

console.log(ui)

编辑:

关于 onChange 您可以查看这篇文章:手动触发 onchange 事件

希望能帮助到你!

于 2012-10-27T00:59:39.837 回答