阅读:3047回复:2
请问firefox如何实现在keydown时只输入数字
以下代码在ff中不起作用,但在ie中可以.
firefox响应keydown时,似乎总是先改变text的value然后才执行inputOnlyNum 而ie先执行inputOnlyNum,进行判断过滤后才执行上层函数. 请问,firefox如何实现在keydown时只输入数字? <input type="text" onkeydown="inputOnlyNum(event)"> function inputOnlyNum(myEvent) { var keys=myEvent.keyCode; if (!((keys>=48&&keys<=57)||(keys>=96&&keys<=105) ||( keys==8 )||(keys==46)||(keys==37)||(keys==39)||(keys==13)||(keys==229) )) { myEvent.returnValue=false; } } |
|
|
1楼#
发布于:2005-10-11 16:05
myEvent.preventDefault();
|
|
|
2楼#
发布于:2005-10-11 16:05
abc@home:myEvent.preventDefault();回到原帖 谢谢,按你的提示改成以下代码改但是发现preventDefault()居然对keydown不起作用 <input type="text" onkeydown="inputOnlyNum(event)"> function inputOnlyNum(myEvent) { var keys=myEvent.keyCode; if (!((keys>=48&&keys<=57)||(keys>=96&&keys<=105) ||( keys==8)||(keys==46)||(keys==37)||(keys==39)||(keys==13)||(keys==229) )) { if(doument.all) myEvent.returnValue=false;//ie else myEvent.preventDefault();//ff } } 不过preventDefault()对keypress还是起作用的,于是我改成下面方式实现了我的目的,谢谢楼主提示!不知道有没有更好的办法. <input type="text" onkeydown="inputOnlyNum(event);" onkeypress="checkIfNum(event);"> <script language="javascript"> var keyIsNum = true; function inputOnlyNum(myEvent) { var keys=myEvent.keyCode; if (!((keys>=48&&keys<=57)||(keys>=96&&keys<=105)||( keys==8 )||(keys==46)||(keys==37)||(keys==39)||(keys==13)||(keys==229) )) { keyIsNum = false; } else { keyIsNum = true; } } function checkIfNum(myEvent) { if(!keyIsNum) { if(document.all) myEvent.returnValue=false;//ie else myEvent.preventDefault();//ff } } </script> |
|
|