用js更改字符代码并改为显示新字符

时间:2015-03-07 09:48:22

标签: javascript jquery events keyboard-events

我想编写一个代码,如果用户按下某个键,它会更改User事件的keyCode或charCode并使用新的charcode触发事件,

我写了this code in jsfiddle,但由于递归过多,此代码无法正常工作。

function convert(e, elem) {
    function getKey(event) {
        if (event.which == null) {
            return event.keyCode // IE
        } else if (event.which != 0 && event.charCode != 0) {
            return event.which // the rest
        } else {
            return null // special key
        }
    }
    var key = getKey(e);

    key++;

    return key;
}

$(".myInput").keypress(function (e) {
    var returnedKey = convert(e, this);
    e.which = e.keyCode = returnedKey;
    $(this).trigger(e);
});
<input type="text" class="myInput" />

任何有助于我的代码工作的想法都会受到赞赏。

非常感谢。

1 个答案:

答案 0 :(得分:1)

关于递归问题,您需要添加停止条件,例如:

$(".myInput").keypress(function (e) {
  var returnedKey = convert(e, this);
   e.which = e.keyCode = returnedKey;
if(!e.isSecondTrigger){
    e.isSecondTrigger = true;
    $(this).trigger(e);
}});

这样,您只需更改一次值。但是,正如LShetty在评论部分中所述,事件值是只读的 - 您无法更改已按下的按钮的值,从而更改输入文本。为此,您需要在每次用户操作后手动更改输入文本的值(即,在每次按键时保持输入文本的值,在用户按下某个键时修改它,然后覆盖输入字段值与输出)。