0

jqueryオートコンプリートを備えたRails3.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イベントが発生します。ただし、選択後は起動しません。上記のコードの何が問題になっていますか?

更新:selectがinvoice_customer_name_autocompleteで変更イベントをトリガーできる場合、これが必要です。以下のコードを試しましたが成功しませんでした(変更イベントは発生しませんでした):

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

1 に答える 1

1

jQuery Autocomplete プラグインを使用している可能性がありますが、確かではありませんが、jQuery UI autocompleteを呼び出す方法で呼び出しています。

最初のものを使用している場合

提案:

  1. オートコンプリート プラグインの代わりに、jQuery UI でオートコンプリートを使用します。後者は非推奨です。

ここで正しいフレームワークを使用することは、それが機能する例です: jsFiddle

それはあなたのものと変わらないので、null オブジェクトにアクセスしている理由を理解するために ui オブジェクトをログに記録する必要があります。これを行う最も簡単な方法は、オブジェクト全体をコンソールにログオンして監視することです。

console.log(ui)

編集:

onChange に関しては、この投稿を確認できます: onchange イベントを手動でトリガーする

それが役に立てば幸い!

于 2012-10-27T00:59:39.837 に答える