3

オートコンプリートをこのように動作させたいです。

ユーザーがテキストボックスに何かを入力しているとき、何も起こらないはずです.オートコンプリート候補リストは、ユーザーがテキストボックスへの書き込みを終了してEnterキーを押したときにのみ表示されます..

これを行う方法についてのアイデア..またはコードを変更する場所..

4

3 に答える 3

6

ステップ1

jquery.ui.autocomplete.jsファイルを変更して、署名を持つメソッドを次のように変更して、Enter キーを受け入れるようにします。

.bind("keydown.autocomplete", 関数 (イベント)

次のコードを変更します

                case keyCode.ENTER:
                case keyCode.NUMPAD_ENTER:
                    // when menu is open and has focus
                    if (self.menu.active) {
                        // #6055 - Opera still allows the keypress to occur
                        // which causes forms to submit
                        suppressKeyPress = true;
                        event.preventDefault();
                    }
                    //passthrough - ENTER and TAB both select the current element

                case keyCode.ENTER:
                case keyCode.NUMPAD_ENTER:
                    // when menu is open and has focus
                    if (self.menu.active) {
                        // #6055 - Opera still allows the keypress to occur
                        // which causes forms to submit
                        suppressKeyPress = true;
                        event.preventDefault();
                    }
                    else {

                        clearTimeout(self.searching);
                        self.searching = setTimeout(function () {
                            // only search if the value has changed

                            self.selectedItem = null;
                            self.search(null, event);

                        }, self.options.delay);

                    }
                    //passthrough - ENTER and TAB both select the current element

STEP : 2 オートコンプリート バインディングを次のように変更する

 $('.SearchAddresses').autocomplete({
  // Your bind code by setting required parameters

  search: function (event, ui) {
                var key = CheckBrowser(event);
                if (key == 13)
                    return true;
                else
                    return false;
            }
   });


 function CheckBrowser(e) {
        if (window.event)
            key = window.event.keyCode;     //IE
        else
            key = e.which;     //firefox
        return key;
    }

SETP : 3 asp.net フォーム コントロール内で使用している場合

それも含めます。

 $(document).ready(function () {

        $("form").keypress(function (e) {
            var key = CheckBrowser(e);
            if (key == 13) {
                e.preventDefault();
                return false;
            }
            else {
                return true;
            }
        });
    });
于 2012-07-11T10:41:31.847 に答える
2

「EnterKey」のkeypressイベントを確認することをお勧めします。押されたキーが「Enter」の場合、以下のようにオートコンプリート機能をトリガーします。

$(#inputBoxId).keypress(function(e) {
    if(e.which == 13) {
       $( "#elementId" ).autocomplete({
        //............... bind autocomplete and write your code
       });
    }
});

これを試してみてください。お役に立てば幸いです。

于 2012-07-10T16:49:29.153 に答える
0

おそらく、コントロールを動的にバインド/バインド解除します。たとえば、Enter キーが押されるまでオートコンプリートにしないでください。ソースボックスを読み取り専用にするか、もう一度Enterキーを押すまでテキストが変更された場合は削除しますか? ドロップダウンを表示するオートコンプリートイベントを手動でトリガーできると確信しています。

于 2012-07-10T15:31:12.240 に答える