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 不一致的主要内容,如果未能解决你的问题,请参考以下文章