| 
			 
					阅读:3293回复: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				
			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> | 
	|
					
						
  | 
	
| 
			 2楼# 
								发布于:2005-10-11 16:05				
			
					myEvent.preventDefault();				 
							 | 
	|
					
						
  |