1

I を使用jqueryUi autocompleteすると、ユーザーが on と入力した場合にのみ、最初の項目が自動的にフォーカスされtab keyます。
このタスクはどのように実行すればよいですか?
指定されたオートコンプリートを初期化することはautoFocus option true、私の目的には合いません!

何か案は?


これが私のコードです。
詳しくはコメントをご覧ください。

    element.autocomplete({
        minLength: 3,
        // the following option "autoFocus = true"
        // make the first item focused when the user type the first 3 letters
        // I would like the first item focused only when I type on TAB 
        autoFocus: false,
        source: function (request, response) {
            // some code
        }
    }).data('autocomplete')._renderItem = renderItem;

    // the following piece of code works only when I type the first three letters,
    // If I type four letters and then tab it does not work!
    element.on('keyup', function (event) {
        if (event.keyCode === 9) {
            element.autocomplete( "option", "autoFocus", true );
        }
    });
4

1 に答える 1

2

ええ、autoFocusはあなたが望むことをしません。代わりに、ユーザーがアイテムを選択したいときに通常行う必要のあるキー押下を偽造することができます。

element.keydown(function(e){
   if( e.keyCode != $.ui.keyCode.TAB ) return; // only pay attention to tabs

   e.keyCode = $.ui.keyCode.DOWN;   // fake a down error press
   $(this).trigger(e);

   e.keyCode = $.ui.keyCode.ENTER;  // fake select the item
   $(this).trigger(e);
});

デモ: http: //jsfiddle.net/uymYJ/8/

于 2012-08-20T14:52:48.413 に答える