3

我希望自动完成功能像这样。

当用户在文本框中输入内容时,什么都不会发生。只有当用户在文本框中完成写入并按下回车键时,才会出现自动完成建议列表。

任何想法如何做到这一点..或者在哪里更改代码..

4

3 回答 3

6

第1步

通过更改具有以下签名的方法来更改jquery.ui.autocomplete.js文件以接受回车键

.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

我建议检查“输入键”的按键事件。当按下的键是“Enter”时,触发自动完成功能,如下所示。

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

试试这个。可能对你有帮助。

于 2012-07-10T16:49:29.153 回答
0

也许动态绑定/取消绑定控件。例如,在按下回车键之前不要让它自动完成?要么只读源框,要么在文本更改之前删除,直到他们再次按下回车键?我很确定您可以手动触发自动完成事件,该事件将显示下拉菜单。

于 2012-07-10T15:31:12.240 回答