4

フィールドへのフォーム入力をリッスンするjQueryリスナーをセットアップしていtype="text"ます。ただし、ユーザーがオートコンプリートのドロップダウンボックスからオプションを選択した場合(つまり、以前に入力した値で、将来の使用のために記憶されている場合)、以下のリスナーはその値を収集しません。

これが私の現在のコードです:

$('#text-input').on("keyup change paste", function() {
    var textInput = $(this).val();
    // do something with textInput
});

上記は貼り付けと入力には機能しますが、ドロップダウン候補リストからオプションが選択されている場合は機能しません。

リスナーに何を追加する必要があるか教えてもらえますか?

乾杯。


私の解決策

リスナーを使用してautocompleteみたところ、これは私のシナリオでは機能しないようだったので、代わりに、受け入れられた答えに触発された次のコードを追加しました。

var timer = 0;
$('#text-input').on("keyup change paste", function() {
    if (timer != null) {
        clearTimeout(timer);
        timer = setTimeout(function() {
            var textInput = $(this).val();
            // do something with textInput
        }, 1000);
    }
});

これの追加のボーナスは、私のテキスト入力がURLを取得し、それを使用して追加のコンテンツをページにロードすることです。タイムアウトを設定すると、ユーザーがURLを入力している間、スクリプトが常にURLを読み込もうとしないことを意味します。

4

1 に答える 1

3

提案のリストにリスナーを追加する必要があります(リスト全体、委任付き、または各値に順番に)。提案でクリックイベントが発生するたびに、検索ボックスの値を更新します。


私はあなたがブラウザのデフォルトの提案(すなわち autocomplete属性)を意味していることに気づきました。この答えは役立つかもしれません:Javascriptはブラウザのオートコンプリート値の選択を検出します。オートコンプリートがイベントをトリガーしなくても変更が検出されるように、フォーカスがあるときに入力の値をポーリングします。

于 2012-07-03T08:33:03.300 に答える