你能用jQuery UI自动完成组合框限制输入无效击键吗?

leo*_*ora 5 jquery keypress jquery-ui-autocomplete

当使用jQuery UI自动完成 组合框时,我认为会有一个选项只强制基于列表的有效密钥条目.有没有办法不允许无效密钥,所以你只能在列表中输入有效的项目?另外,有没有办法设置组合框的默认值?

如果我的列表有(C#,Java,Python)

我可以开始输入"abcds." 它让我输入它.我想只允许有效的条目.

Luc*_*ofi 13

更新2

Tested on
Internet Explorer 6 and later
Chrome
Firefox
Opera
Run Code Online (Sandbox Code Playgroud)

演示: http ://so.lucafilosofi.com/can-you-restrict-entering-invalid-keystrokes-with-jquery-ui-autocomplete-combobox

核心JavaScript代码:

    var Tags = ['csharp', 'java', 'python' ];

    $("#autocomplete").keypress(function(event) {
        //Firefox workaround..
        if (!event.which &&
            ((event.charCode || event.charCode === 0) ? event.charCode: event.keyCode)) {

            event.which = event.charCode || event.keyCode;
        }
        var charCode = String.fromCharCode(event.which).toLowerCase();
        var search_val = this.value + charCode;
        var x = search_val.length - 1;
        var match;
        for (var i = 0; i < Tags.length; i++) {
            if (charCode == Tags[i][x] && Tags[i].indexOf(search_val) != -1) {
                match = true;
            }
        }
        //Backspace functionality added!
        if (!match && event.which != 8 ) {
            event.preventDefault();
        }
    });
Run Code Online (Sandbox Code Playgroud)

注意:

  1. 仅强制基于列表的有效密钥输入;
  2. 设置默认值;
  3. 轻量级实现;-)

让我知道!