空格键keyCode(32)无法在Mozilla Firefox上运行

Fi3*_*n1k 6 javascript firefox space keycode onkeypress

Enter 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>
Run Code Online (Sandbox Code Playgroud)

为什么这在Chrome中运行时无法在Firefox中运行?

Bor*_*sky 5

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

通常,您希望在keyup/keydown中使用keypress中的charCode可打印内容keyCode.


Nip*_*ain 0

尝试这个代码,它会工作得很好......

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;  
Run Code Online (Sandbox Code Playgroud)