我可以在chrome中更改事件的keyCode属性吗?

时间:2012-10-01 14:08:03

标签: javascript internet-explorer google-chrome

我们正在使用以下代码为IE中的onKeyPress事件分配新的密钥代码:

window.event.keyCode=65

在IE中,这会更改链中其他事件处理程序所接收的密钥,但此代码在chrome中不起作用。有没有办法做到这一点?

示例HTML:

<input type="text" name="hotelfloornew" id="hotelfloornew" 
       onkeypress="uPPer();" size="25" />

相应的JS:

function uPPer()
{
    switch (window.event.keyCode)
    {       
        case 97:window.event.keyCode=65;break;
        case 98:window.event.keyCode=66;break;  
        case 99:window.event.keyCode=67;break;  
        case 100:window.event.keyCode=68;break;
.
.
.

    }
}

3 个答案:

答案 0 :(得分:3)

IE会分配一个全局事件值,但这不是规范化的。在其他浏览器中,使用提供给回调的值:

window.onkeypress = function(event) {
   console.log(event.keyCode);
}

答案 1 :(得分:1)

更改事件的keyCode属性是一个严重的黑客攻击,只能在旧的IE中使用。它应该是只读的,并且在所有合理的浏览器中。不要这样做。

如果您需要更改按键的效果,请阻止其默认操作并手动执行您自己的替换操作。如果要将键入的字符映射到其他字符you can use code I've published before on Stack Overflow

答案 2 :(得分:0)

function doKey(e) {
        evt = e || window.event; // compliant with ie6        
        alert(evt.keyCode+' Pressed');
    }

window.event.keyCode主要用于IE ...这是一个示例代码,它将提醒所有导航器中按下的keyCode。