Javascript 空格键(32)不适用于Mozilla Firefox

Javascript 空格键(32)不适用于Mozilla Firefox,javascript,firefox,space,keycode,onkeypress,Javascript,Firefox,Space,Keycode,Onkeypress,输入keyCode(13)在所有浏览器上都可以正常工作 空格键keyCode(32)我在Chrome上测试过,可以正常工作,但在Firefox上没有响应。我使用了以下代码: <script type="text/javascript" > function enterPressed(evn) { var e_id = $('e_id').value; var e_fname = $('e_fname').value; var e

输入
keyCode(13)
在所有浏览器上都可以正常工作

空格键
keyCode(32)
我在Chrome上测试过,可以正常工作,但在Firefox上没有响应。我使用了以下代码:

<script type="text/javascript" >
    function enterPressed(evn) {
        var e_id = $('e_id').value;
        var e_fname = $('e_fname').value;
        var e_role = $('e_role').value;

        if (window.event && window.event.keyCode == 13) {
            Monitor.Order.assign(e_id, e_fname, e_role);
        } else if (evn && evn.keyCode == 13) {
            Monitor.Order.assign(e_id, e_fname, e_role);
        } else if (evn && evn.keyCode == 32) {
            Monitor.Order.updateStatus('COOKED');
        }                       
    }
    document.onkeypress = enterPressed;     
</script>

功能已按下(evn){
变量e_id=$('e_id')。值;
var e_fname=$('e_fname')。值;
var e_role=$('e_role')。值;
if(window.event&&window.event.keyCode==13){
Monitor.Order.assign(e_id、e_fname、e_角色);
}else if(evn&&evn.keyCode==13){
Monitor.Order.assign(e_id、e_fname、e_角色);
}else if(evn&&evn.keyCode==32){
Monitor.Order.updateStatus('COOKED');
}                       
}
document.onkeypress=按回车键;

当它在Chrome上运行时,为什么在Firefox上不起作用?

试试这段代码,它会很好地工作

function enterPressed(evn) {
if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x 

        var e_id = $('e_id').value;
        var e_fname = $('e_fname').value;
        var e_role = $('e_role').value;

        if (evn.which == 13) {
            Monitor.Order.assign(e_id, e_fname, e_role);
        } else if (evn.which == 13) {
            Monitor.Order.assign(e_id, e_fname, e_role);
        } else if (evn.which == 32) {
            Monitor.Order.updateStatus('COOKED');
        }                
    }

     else{
            var e_id = $('e_id').value;
            var e_fname =$('e_fname').value;
            var e_role = $('e_role').value;

            if (window.event && window.event.keyCode == 13) {
                Monitor.Order.assign(e_id, e_fname, e_role);
            } else if (evn && evn.keyCode == 13) {
               Monitor.Order.assign(e_id, e_fname, e_role);
            } else if (evn && evn.keyCode == 32) {
                Monitor.Order.updateStatus('COOKED');
            }  

        }
    }
    document.onkeypress = enterPressed;  

空格是一个可打印字符,因此按键事件将把
charCode
设置为它对应的字符,并且不会在Firefox中的按键事件上设置
keyCode


一般来说,您希望在按键中使用
charCode
来打印可打印的内容,在keypup/keypdown中使用
keyCode

您是否尝试过使用
evn=evn | | window.event
?检查:否,但我不知道如何检查?一个快速解决方法是使用
onkeyup
而不是
onkeypress
,当空格被点击时,FF似乎不会触发
keypress
。举个例子:我试过小提琴,效果很好,我只是用简单的警报(“测试”)进行测试;而不是updateStatus(),但仍然不起作用