我想编写一个代码,如果用户按下某个键,它会更改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" />
任何有助于我的代码工作的想法都会受到赞赏。
非常感谢。
答案 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在评论部分中所述,事件值是只读的 - 您无法更改已按下的按钮的值,从而更改输入文本。为此,您需要在每次用户操作后手动更改输入文本的值(即,在每次按键时保持输入文本的值,在用户按下某个键时修改它,然后覆盖输入字段值与输出)。