在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中的正常字符和特殊字符......。
我建议使用 onkeydown
活动。该 event.which
如果我们使用它,就可以如期识别。
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";
}
}