1

例のようにライブ検索を実装するために、YUI のオートコンプリート ウィジェットを使用しています。ただし、検索テキストを入力すると正常に機能しますが、テキストをフィールドに貼り付けると機能しません。貼り付け時にオートコンプリートを開始する適切な方法はどれですか? ドキュメントでそれに関するものは何も見つかりませんでした...

編集:貼り付けは Ctrl-V ではなく、通常はコンテキスト メニューの [貼り付け] です。YUI はキープレスに反応しますが、何かがマウスで貼り付けられた場合は反応しません。

4

3 に答える 3

3

YUI のオートコンプリート ウィジェットを拡張し、コンテキスト メニューからの貼り付けを次のように処理します。

YAHOO.util.Event.on(input, 'paste', function(e, autocomplete) {
    // We're interested in the value of the input field after text is pasted into
    // it instead of the pasted text because the autocomplete proposals are based 
    // upon the field's whole value. The paste event happens before the input 
    // field has been updated so we need to wait until after this event has been 
    // handled to check the value of the input field.
    window.setTimeout(function() {
        if (autocomplete._sInitInputValue !== autocomplete.getInputEl().value) {
            autocomplete.sendQuery(autocomplete.getInputEl().value);
        }
    }, 1);
}, this);

thisオートコンプリート ウィジェットはどこにありますか。

于 2010-06-15T04:59:04.340 に答える
0

編集

これは、貼り付けイベントをサブスクライブできるブラウザーを示す互換性テーブルです。

http://www.quirksmode.org/dom/events/cutcopypaste.html

イベントをサブスクライブする方法を確認できる彼のテスト ページを次に示します。

http://www.quirksmode.org/dom/events/tests/cutcopypaste.html

YUIを使用してサブスクライブし、コールバックを次のようにすることができると思います:

function() { 
    autoCompleteObject.sendQuery(autoCompleteElement.value);
}

ブラウザの非互換性に気をつけてください。イベントの実装が奇妙なものがあるようです。

于 2009-08-18T16:26:55.610 に答える
0

おそらくキーイベントで、ctrl を押しながら v を押したかどうかを検出できます。ある場合は、sendQuery('query=' + textInput.value); を実行します。

于 2009-08-18T14:20:37.623 に答える