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正变为零并进入'如果'如果被按下的字符是特殊字符,则阻止和打印警告...否则它将转到“其他”字样。阻止...
但是在IE10中,它将会出现在其他地方。始终阻止特殊字符和普通字符...
令人惊讶的是,点和删除在IE10中具有相同的ascii值46 ..在密码的警告中打印相同的'如果'块....
如何区分IE10中按下的普通和特殊字符.....
答案 0 :(得分:1)
我建议使用onkeydown
事件。如果我们使用event.which
,<input type="text" onkeydown="keypress(event)" />
会被视为预期。
Working Demo of distinction of .
and Delete
buttons
HTML:
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');
}
}
JS:
.
编辑:似乎>
和190
在keydown事件中具有相同的密钥代码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";
}
}
键。
这是一种方法:
{{1}}