问题描述
function inputnumber(){var e = e || event ; if(e.keyCode>47 && e.keyCode<58) //设置输入数字 { alert(e.keyCode) return true; }else{ alert("请出入数字"); return false; }ID号:<input type="text" name="id"/ size="8" onKeypress="return inputnumber()">用这个onKeypree获得键盘的键码值, 在IE中可以,为什么在firefox中就不可以了, 求解。。。。
解决方案
你的问题有两个:1、<input type="text" name="id"/ size="8" onKeypress="return inputnumber()"> 这样以内联的方式绑定事件时,实际上浏览器会像类似于下面这样的方式处理:document.getElementById('id').onkeypress = function(){ return inputnumber()}这样的话,在FF下你的event对象是无法获取的,因为FF里面事件对象是作为事件处理函数的第一个参数传递进去的。2、function inputnumber(){var e = e || event ; if(e.keyCode>47 && e.keyCode<58) //设置输入数字 { alert(e.keyCode) return true; }else{ alert("请出入数字"); return false; } 在FF里面有keypress事件对象有“keyCode”和“charCode”属性,这里你需要使用“charCode”来获取。下面是我改的:document.getElementById('qq').onkeypress = inputnumber;function inputnumber(ev){var e = ev || event ;alert(e);var code = e.charCode || e.keyCode;alert(code);if(code>47 && code<58) //设置输入数字{alert(code)return true;}else{alert("请出入数字");return false;}}把上面的代码放到window.onload里面。最后建议作者还是不要自己写这样的代码,浏览器兼容性是个很大的问题。采用JQuery这样的框架吧。
解决方案二:
键码即使获得了 你用这个办法也不太好。 你用jquery比较好 ,可以跨平台,每次在时间触发的时候,都内置有event对象使用,所有浏览器都可以。
解决方案三:
http://bbs.linuxphp.org/thread-690-1-1.html参考一下
解决方案四:
ff的event跟IE里的不同,IE的是全局,随时可用。FF的要用参数引导才能用,是运行时的临时对象。document.onkeydown=inputnumber;function inputnumber(e){ if(e.keyCode>47 && e.keyCode<58) //设置输入数字 { alert(e.keyCode) return true; }else{ alert("请出入数字"); return false; }