在jquery自动完成中选择条目后的事件是什么?

时间:2012-10-26 23:03:41

标签: ruby-on-rails jquery-ui autocomplete

我们有一个带有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');
}

1 个答案:

答案 0 :(得分:1)

您可能正在使用我无法确定的jQuery Autocomplete plugin,但您按照拨打jQuery UI autocomplete的方式调用它。

如果您使用第一个

建议:

  1. 在jQuery UI中使用自动完成功能而不是自动完成插件。后者已被弃用。
  2. 使用正确的框架是一个工作的例子: jsFiddle

    它与你的没什么不同,所以你应该记录ui对象以了解你为什么要访问一个null对象,最简单的方法是登录控制台整个对象并观察它

    console.log(ui)
    

    修改

    关于onChange,您可以查看此帖子:trigger onchange event manually

    希望它有所帮助!