【问题标题】:events recognizing special characters in IE10 vs IE8 [duplicate]在 IE10 和 IE8 中识别特殊字符的事件 [重复]
【发布时间】:2014-09-14 09:28:20
【问题描述】:

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' 块并在按下的字符是特殊字符时打印警报...否则它转到 'else' 块...

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

令人惊讶的是,dot 和 delete 在 IE10 中具有相同的 ascii 值 46.. 在 keycode 'if' 块的警报中打印相同....

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

【问题讨论】:

  • 你如何调用函数keypress??? window.onkeyup = keypress;??

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


【解决方案1】:

我建议使用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');
    }
}

编辑:看来.&gt; 在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

【讨论】:

  • Dot 和 '>' 在 keydown 事件中具有相同的键码 190。请帮助我处理该事件.....
  • @ANILBABU 请参阅上面答案中的编辑。我希望它有帮助! :)
  • 还有一个问题 Rahul.. 右箭头和单引号具有相同的键码.. 请帮我区分这两个事件............
  • @ANILBABU 您可以编写与我在上面所做的相同的机制。 Stakoverflow 不是针对每个问题的解决方案提供商。从我上面的回答中学习
  • hmm @Rahul Desai ...这两个中没有移位事件来区分............任何人都感谢您的帮助
猜你喜欢
  • 2021-03-31
  • 1970-01-01
  • 2014-04-25
  • 1970-01-01
  • 2018-09-25
  • 1970-01-01
  • 1970-01-01
  • 2012-10-30
  • 2012-03-28
相关资源
最近更新 更多