自定义键盘/替换键

时间:2011-03-29 23:08:04

标签: javascript jquery javascript-events

您好 我想改变键盘的行为,所以当用户在输入框上按下键时,键盘就会出现问题。 a = 97它变为b 97 + 1.

我希望它用于跨浏览器

2 个答案:

答案 0 :(得分:1)

jQuery.keypress会在用户输入内容时为您提供事件,String.fromCharCode会为您提供字符+1。棘手的部分是处理选择。

为了获得选择,我使用了jQuery field selection插件,并确保它不会一直跳到我使用this answer to another question的结尾。这是最终的代码:

$(function() {
    $("#target").keypress(function (evt) {
        if (evt.which >= 65 && evt.which <= 122) {
            var sel = $(this).getSelection();
            var val = $(this).val();
            var out = val.substring(0, sel.start) + String.fromCharCode(evt.which+1) + val.substring(sel.end, val.length);
            $(this).val(out);
            $(this).selectRange(sel.start + 1, sel.start + 1);
            return false;
        }
    });
});

jsFiddle

我将其限制为a-zA-Z,但您可以根据需要自定义。

答案 1 :(得分:0)

我在Firefox和Chrome中测试过以下内容。使用“keypress”允许使用其他键,使用charCode允许使用小写和大写字母:

document.getElementById("textbox").addEventListener("keypress",function(event){
    event.preventDefault();
    this.value+=(String.fromCharCode(event.charCode+1))
},false);

我刚才看到了jQuery标签,所以你也可以这样做:

$("#textbox").bind("keypress",function(event){
    event.preventDefault();
    this.value+=(String.fromCharCode(event.charCode+1));
});