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

标签 javascript html internet-explorer-8 dom-events 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 变为零并进入“if” block 并在按下的字符是特殊字符时打印警报...否则它将进入“else” block ...

但是在 IE10 中,对于特殊字符和普通字符,它将始终阻止“else”...

令人惊讶的是,点和删除在 IE10 中具有相同的 ascii 值 46.. 在键码“if” block 的警报中打印相同的值......

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

最佳答案

我建议使用onkeydown事件。如果我们使用的话,event.which 就会被识别为预期的。

Working Demo of distinction of . and Delete buttons .

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

编辑:似乎.>在keydown事件中具有相同的键代码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";
    }       

}

Working Demo

关于javascript - 识别 IE10 与 IE8 中特殊字符的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24906371/

相关文章:

css - Bootstrap 3 和 IE8 的问题(表现得像移动设备)——包括响应

javascript - 如何阻止 Firebase Functions 对每个 Cloud Functions 执行一次本地函数?

javascript - Math.random 使用什么算法?

javascript - 如何在数组中的多个对象上相互独立地使用 Angular $watch 和 Equality?

html - 让它成为一行,即使 <br> 在那里

javascript - CSS Force span 没有父样式

html - 内联图像支持的差异?

javascript - 在有源的情况下使用 HTML 脚本标签进行编码

php - 带有下拉列表和预选选项的购物车

css - 在 IE8 中强制水平滚动条