在IE10与IE8中识别特殊字符的事件[重复]。

问题描述 投票:0回答:1

在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.变成0,进入'if'块,如果按的是特殊字符,则打印提示,否则进入'else'块......。

但在IE10中,无论是特殊字符还是普通字符,都会进入'其他'区块......。

令人惊讶的是,点和删除在IE10中具有相同的ascii值46......在键码'if'块的提醒中打印相同的值......。

如何区分IE10中的正常字符和特殊字符......。

javascript html internet-explorer-8 dom-events internet-explorer-10
1个回答
1
投票

我建议使用 onkeydown 活动。该 event.which 如果我们使用它,就可以如期识别。

的区别的工作演示。.Delete 按钮.

HTML:

<input type="text" onkeydown="keypress(event)" />

JS。

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');
    }
}

EDIT: 似乎 .> 同码 190 为了确定这两个元素在同一个键上,我们需要跟踪这两个元素是否在同一个键上。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";
    }       

}

"工作示范

© www.soinside.com 2019 - 2024. All rights reserved.