在输入框或contenteditable = true div中,如何修改字母"a"的按键以返回字母"b"的按键?即,每次在div中键入字母"a"时,输出实际上是字母"b".
我并不关心在IE中运行的解决方案 - 只适用于Safari,Chrome和FF.
在Chrome中,我可以看到按键事件具有属性"charCode","keyCode"和"which",所有这些属性都被分配了按键事件编号.如果我在一个按键触发一个事件,我可以修改这些值,但我无法弄清楚如何返回,使得被输入的实际密钥是不同的.例如:
$(window).keypress(function(e){ //$(window) is a jQuery object
e.charCode = 102;
e.which = 102;
e.keyCode = 102;
console.log(e);
return e;
});
Run Code Online (Sandbox Code Playgroud)
我还可以看到,除了charCode,和keyCode之外,还有一个"originalEvent"属性,而这个属性又具有这些属性.但是,我无法修改那些(我试过像e.originalEvent.charCode = 102这样的东西).
我需要在文本输入中更改字符'.' 输入时'',' 在IE中,我更改了keypress事件中的keyCode事件属性,就像这样
document.getElementById('mytext').onkeypress =
function (evt) {
var e = evt || window.event;
if (e.keyCode && e.keyCode==46)
e.keyCode = 44;
else if (e.which && e.which==46) {
e.which = 44;
}
};
Run Code Online (Sandbox Code Playgroud)
但它表明,在Firefox中,不可能更改键事件中键入的字符.有什么建议?
我正在开发一个javascript键盘,试图让用户输入各种非洲语言.目前,这在IE8和Firefox中运行良好但不是谷歌浏览器,我实际上只是坚持这个.我想要完成的是例如,键入(在我的物理键盘上)' q '(keyCode = 113)并获得' ɛ '(keyCode = 603)作为输出,但目前,我的代码在谷歌浏览器中没有任何作用.我的代码的相关部分如下:
var k_layouts = {};
k_layouts.Akan = {88:390,113:603};//keyCode mappings for Akan language
k_layouts.Ga = {120:596,81:400};//keyCode mappings for Ga language
var current_layout = "";
//function that maps the keyCode of a **typed** key to that of the **expected** key
function map_key_code(keycode){
if(k_layouts[current_layout] && k_layouts[current_layout][keycode])
return k_layouts[current_layout][keycode];
return keycode;
}
//function that actually changes the keyCode of a **typed** key to the **expected** value
function handle_keypress(ev){
var ev = ev || window.event;
if(ev.bubbles != …Run Code Online (Sandbox Code Playgroud)