【问题标题】:Space bar keyCode(32) not working on Mozilla Firefox空格键 keyCode(32) 在 Mozilla Firefox 上不起作用
【发布时间】:2017-10-16 15:30:42
【问题描述】:

输入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>

为什么它在 Chrome 中运行时在 Firefox 中不起作用?

【问题讨论】:

  • 你试过了吗。 evn = evn || window.event ?
  • 没有,但我不知道怎么做?
  • 一个快速的解决方法是使用onkeyup 而不是onkeypress,看起来,当空格被击中时,FF 不会触发keypress。一个例子:jsfiddle.net/8EFhW/0
  • 我试过小提琴工作正常,我只是用简单的 alert('TEST');而不是 updateStatus() 但仍然无法正常工作

标签: javascript firefox space keycode onkeypress


【解决方案1】:

空格是一个可打印的字符,所以 keypress 事件会将 charCode 设置为它对应的字符,而 keyCode 不会在 Firefox 中的 keypress 事件上设置。

一般来说,您想在 keypress 中使用 charCode 来打印可打印的东西,在 keyup/keydown 中使用 keyCode

【讨论】:

    【解决方案2】:

    试试这个代码,它会正常工作的......

    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;  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-20
      • 2014-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多