我写了一段代码,它只接受数值作为关键事件。它应该只接受0-9和退格。但它也允许正斜杠作为输入。
{{1}}
答案 0 :(得分:2)
正斜杠/
的ASCII代码为47,因此indexOf
返回0而不是-1。
答案 1 :(得分:0)
在我的原始回复引用下面,根据@ t.niese留下的评论,我创建了一个更新的笔。
http://codepen.io/ballerton/pen/PzOdxW
实际上,使用 element.addEventListener('keypress',function(event){
var charcodeAcceptable=['1','2','3','4','5','6','7','8','9','0','Backspace'];
if (window.event) {
var charCode = window.event.key;
}
else if (event) {
var charCode = event.key;
}
if(charcodeAcceptable.indexOf(charCode)==-1){
event.preventDefault();
}
});
获取按键的值,然后针对允许的值进行测试:
element.addEventListener('keypress',function(event){
var charcodeAcceptable=[47,48,49,50,51,52,53,54,55,56,57,8];
if (window.event) {
var charCode = window.event.keyCode;
}
else if (event) {
var charCode = event.keyCode;
}
if(charcodeAcceptable.indexOf(charCode)==-1){
event.preventDefault();
}
});
我修改了代码以使用event.keyCode,它可以作为 预期
http://codepen.io/ballerton/pen/vKWzRO
element.addEventListener('keypress',function(event){ var charcodeAcceptable=[47,48,49,50,51,52,53,54,55,56,57,8]; if(charcodeAcceptable.indexOf(event.keyCode)==-1){ event.preventDefault(); } });
Chris Coyier的原版笔
见@ t.niese的评论
关于测试本身,重要的是测试它是否是 窗口事件?
如果不能,你不能只使用:
pressed