对Enter键执行JQuery AutoComplete操作

时间:2012-07-10 15:27:39

标签: jquery

我希望AutoComplete的行为与此类似。

当用户在文本框中输入内容时,不应该发生任何事情。   自动填充建议列表应仅在用户完成写入时出现   在文本框中按下回车键..

知道如何做到这一点..或者在哪里更改代码..

3 个答案:

答案 0 :(得分:5)

STEP: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;
            }
        });
    });

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:0)

可能动态绑定/取消绑定控件。例如。在按下回车键之前不要让它自动完成?只读取源框,或者如果文本发生变化则删除,直到再次按Enter键为止?我很确定你可以手动触发自动完成事件,这会显示下拉列表。