Javascript 在enter键上单击“定位标记链接”
我有一个锚标签,比如Javascript 在enter键上单击“定位标记链接”,javascript,jquery,google-chrome,Javascript,Jquery,Google Chrome,我有一个锚标签,比如 <a class="btn btn-danger" id="clicking" data-bind="click: $root.enterLocation" href="#">Continue</a> 不确定为什么该功能不起作用。我使用了点击功能,同样的结果。它在鼠标点击时工作正常。我需要让它在回车时自动工作 以下代码在Firefox中运行良好 $(document).ready(function () { $(document).on("ke
<a class="btn btn-danger" id="clicking" data-bind="click: $root.enterLocation" href="#">Continue</a>
不确定为什么该功能不起作用。我使用了点击功能,同样的结果。它在鼠标点击时工作正常。我需要让它在回车时自动工作
以下代码在Firefox中运行良好
$(document).ready(function () {
$(document).on("keyup", function (event) {
if (event.which == 13) {
document.getElementById("clicking").click();
}
});
});
如何在Chrome上工作?我创建了这个JSFIDLE: 它工作得很好,我只为InternetExplorer添加了一个备用项 你的弹出窗口是什么样子的?也许这是一个iFrame,这将是一个合乎逻辑的解释 代码:
$(文档).ready(函数(){
$(文档).keyup(函数(e){
如果(e.keyCode==13){
$(“#点击”).trigger('click');
}
})
});
更好的选择是使用e.which我认为问题在于您使用的是
event.keyCode
,它并非总是在所有浏览器中使用。一些浏览器使用event.charCode
,甚至使用不同的事件。这可能是您所使用的内容所支持的。无论如何,使用jQuery从事件中获取keycode的正常方法是使用event.which
jQuery规范化传递给事件处理程序的事件
对象,并修复类似这样的“问题”,这样您就不必担心了。同时,它似乎复制了原始事件的一些属性(“原始事件中的大多数属性被复制并规范化为新的事件对象。”——来自jQuery API文档)。这可能就是为什么它对其他人的评论/回答“有效”。传递给处理程序的事件
参数已由jQuery生成/规范化,并将使用正确的属性包含您需要的所有内容。但正确的方法是使用event.which
获取事件的规范化键码
我希望下面的代码可以帮助你。试试看
代码:
$(函数(){
$('body').keyup(函数(e){
如果(e.keyCode==13){
$(“#单击”)。单击();
}
})
});
您不应该使用事件。哪个,而不是keyCode
?对我来说很好:只是澄清一下,当您正常地用鼠标单击链接时,链接会工作,但当您按enter键时不会工作?您确定按enter键时页面具有焦点吗?@Juhana您可能使用的浏览器使用的是keyCode
,所以这很好,但是charCode
呢?省去使用其中一个的麻烦,只需使用jQuery添加的规范化属性事件即可。该属性为事件提供了一个通用的、正确的键代码。@juhana我在dat弹出窗口上有一个文本字段,需要快速聚焦。按enter键时,我需要单击该链接…这不是“Internet Explorer的回退”。没有理由对任何浏览器使用任何回退,因为jQuery会自动处理这个问题。这无论如何都不会有帮助,因为问题可能是缺少event.charCode
,这也是不必要的,因为jQuery将两者都规范化为event.which
。这两个属性是keyCode
和charCode
,因此我打赌OP使用的浏览器使用charCode
,但需要keyCode
。无论哪种方式,您都应该使用event.which
我不知道jQuery会自动执行此操作。此外,没有支持charCode但不支持keyCode的浏览器。Internet Explorer 7和8使用window.event.keyCode。Internet Explorer 9使用e.keyCode,Firefox/Chrome也使用e.keyCode。我不知道你的意思。无论如何,charCode
仅由NS/Firefox使用,可能需要也可能不需要填写,因此您需要检查它。不管怎样,你都不需要做任何这样的检查,因为jQueryNevermind英语不是我的主要语言,我不太明白你想说什么。现在我知道了。@Sanjib Karmakar:event.keyCode也在Chrome中工作,请参见:
$(document).ready(function () {
$(document).on("keyup", function (event) {
if (event.which == 13) {
document.getElementById("clicking").click();
}
});
});
<a class="btn btn-danger" id="clicking" data-bind="click: $root.enterLocation" onclick="alert('test')" href="#">Continue</a>
$(document).ready(function(){
$(document).keyup(function(e){
if (e.keyCode == 13){
$("#clicking").trigger('click');
}
})
});
$(document).ready(function () {
$(document).on("keyup", function (event) {
if (event.which == 13) {
$("#clicking").trigger('click');
}
});
});
<a class="btn btn-danger" id="clicking" onclick="window.location='index.php'" href="#">Continue</a>
$(function(){
$('body').keyup(function(e){
if (e.keyCode == 13){
$("#clicking").click();
}
})
});