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