4

jQuery UIオートコンプリートを使用するテキスト入力要素があります。入力にはonchangeイベントがバインドされ、ユーザーの選択に基づいて他のフォームの値が変更されます。ユーザーがオートコンプリートからオプションを選択したときに、他のフォームの値も変更したいと思っています。jQuery UIのオートコンプリートがクリックされたとき、入力のオンチッチを禁止する

問題は、ユーザーが「ビール」を探していて、「ビー」だけを入力してオートコンプリートのビールオプションをクリックすると、入力のオンチェンジが「ビー」という値で発生し、オートコンプリートのselect関数が起動します(正しい値の "beer")。これらのハンドラはどちらもajaxコールを使用していくつかの情報を検索するため、競合状態に陥ります。

私の質問は:ユーザーがオートコンプリートオプションをクリックした場合、私がオンキーに火をつけたり、中止したりすることができる方法がありますか?注意:これは、クリックすると、キーボードのみを使用してオプションを選択しても、入力のオンチッチは発生しません。

オートコンプリートがアクティブなときにオンチェンジを完全に無効にすることはできません。ユーザーが入力を続けるだけで、オートコンプリートから何も選択せずに入力を終了することは信じられないからです。

私は

答えて

4

など、入力のfocusout、オートコンプリートの項目のフォーカスを含む私は考えることができる他のすべてのイベント、前に公正にconsole.logのビット() 'ING、とのonchangeイベント火災を行ってきましたこの問題は、オートコンプリートのchangeイベントの原因です。このイベントを利用して、ユーザーが項目を選択したかどうかに基づいてロジックを実行できるようになっているように思えます(onchangeautocompleteselectのイベントハンドラを削除します)。たとえば、次のように

$("#auto").autocomplete({ 
    source: ['hi', 'bye', 'foo', 'bar'], 
    change: function (event, ui) { 
     if (ui.item) { 
      /* user selected an item */   
     } else { 
      /* user entered a new item */ 
     } 
    } 
}); 

例:http://jsfiddle.net/bdDs7/

+0

アンドリュー - ありがとうございました。この変更メソッドの使用は、まさに私が必要としているものです。 –

+0

@AndrewWhitakerこれについて何か考えていますか? http://stackoverflow.com/q/20513604/829533 – zzlalani

関連する問題