jQuery keydown 不一致

Posted

技术标签:

【中文标题】jQuery keydown 不一致【英文标题】:jQuery keydown is not consistent 【发布时间】:2020-05-08 08:11:45 【问题描述】:

按 ESC 键时,我想找到链接的 href 属性并重定向到该链接。我正在使用以下代码,它可以工作,但是它不一致,我不知道为什么。

页面上有输入表单值,如果光标在某个输入字段,按了ESC键,则不起作用。但是,奇怪的是,如果我在 jquery 代码中添加警报,那么它会显示警报并重定向。

即使某些输入字段被聚焦,我怎样才能让它重定向?

 $(document).ready(function() 
   $(document).keydown(function(e) 
     var code = (e.keyCode ? e.keyCode : e.charCode);
     if (e.keyCode == 27) 
       var href = $('a').attr('href');
       alert(href); //notice this alert
       if (href) 
         $(location).attr("href", href);
       
     
   );
 );

在上面的代码中,注意alert。如果警报在那里,它会起作用,如果我删除该行,它就不起作用。这是演示。 (我只在 Firefox 上检查过)。

JSFiddle: https://jsfiddle.net/3q56atsm/

【问题讨论】:

你能发布一些 html 以供参考吗? 您必须为输入元素应用 keydown 事件。 或者甚至更好的 JSFiddle 或类似的东西来查看一个工作示例? @DanielSchroederDev 最好使用堆栈 sn-p @DanielSchroederDev 我编辑了问题并添加了 JSFiddle 链接。 【参考方案1】:

我也遇到了同样的问题,希望可以解决

$(document).ready(function() 
        $(document).keydown(function(e) 
          keyCode(e);
        );
  );

  function keyCode(event) 
    var x = event.keyCode;
    if (x == 27) 
      alert ("You pressed the Escape key!");
    else
      alert("Other Key");
    
  

【讨论】:

【参考方案2】:

试试这个。

$(document).ready(function() 
    $(document).keydown(function(e) 
        var code = (e.keyCode ? e.keyCode : e.charCode);
        if (e.keyCode == 27) 
            var href = $('a').attr('href');
            if (href) 
                $(location).attr("href", href);
            
        
    );
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
 <input type="text">
        <a href="https://***.com/questions/59855117/jquery-keydown-is-not-consistent/59855330#59855330">Some test</a>

【讨论】:

如果你删除了alert(href); 那么它不会起作用,试试那个。这正是我的问题。 不,它什么都不做,但如果你保持警觉,它就会起作用,这很奇怪。 你可以用控制台替换警报,看看控制台打印了什么

以上是关于jQuery keydown 不一致的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个 jquery 和 css 在 html 表中不一致?

JQuery:检测输入字段的变化[重复]

jquery.md5.js java md5不一致,求解

jquery.md5.js java md5不一致,求解

jQuery插件不触发更正keydown或空闲事件

dateaxisrender jqplot xticks 宽度不一致