识别IE10与IE8中特殊字符的事件

时间:2014-07-23 09:10:36

标签: javascript html javascript-events internet-explorer-8 internet-explorer-10

Stack Overflow上已有的答案不是我问题的解决方案..

我可以通过键码检查特殊字符,但点和删除都给出相同的键码 46 ...

在这种情况下如何识别特殊角色?

function keypress(ev) 
    {
        if(ev.which == 0)
        {
            alert('pressed character is special handling character like del,Home,Navigation buttons, etc');
        } else {
            alert('pressed character is normal character');
        }
        if(ev.keycode){
            var k = ev.keycode;
            alert('ascii value of pressed character is ....' + k);
        }
    }

如果我正在使用IE8 ...... ev.which正变为零并进入'如果'如果被按下的字符是特殊字符,则阻止和打印警告...否则它将转到“其他”字样。阻止...

但是在IE10中,它将会出现在其他地方。始终阻止特殊字符和普通字符...

令人惊讶的是,点和删除在IE10中具有相同的ascii值46 ..在密码的警告中打印相同的'如果'块....

如何区分IE10中按下的普通和特殊字符.....

1 个答案:

答案 0 :(得分:1)

我建议使用onkeydown事件。如果我们使用event.which<input type="text" onkeydown="keypress(event)" /> 会被视为预期。

Working Demo of distinction of . and Delete buttons

HTML:

function keypress(event) 
{
    alert("something pressed..");

    alert("event.which = " + event.which);

    if(event.which === 46)
    {
        alert('Delete button pressed');
    } else  if(event.which === 190) {
        alert('. button pressed');
    }
}

JS:

.

编辑:似乎>190在keydown事件中具有相同的密钥代码Shift。 要识别同一个键上的这两个元素,我们需要跟踪是否按下var prevKey = ""; function keypress(event) { if(event.which === 16) // only Shift key prevKey = "Shift"; if(prevKey === "Shift" && event.which === 190){ // Shift + . key alert("> key pressed"); prevKey = "Something else"; } } 键。

这是一种方法:

{{1}}

Working Demo

相关问题