|
阅读:3297回复: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> |
|
|