我有像
这样的锚标记<a class="btn btn-danger" id="clicking" data-bind="click: $root.enterLocation" href="#">Continue</a>
它在弹出窗口内。我需要按回车键点击此链接。我尝试过以下代码,但它对我不起作用。
$(document).ready(function(){
$(document).keyup(function(event){
if (event.keyCode == 13){
$("#clicking").trigger('click');
}
})
});
不确定为什么功能不起作用。我也使用了点击功能同样的结果。它在鼠标点击时正常工作。我需要在输入时自动运行。
以下代码在Firefox中正常运行。
$(document).ready(function () {
$(document).on("keyup", function (event) {
if (event.which == 13) {
document.getElementById("clicking").click();
}
});
});
如何在Chrome上完成此工作?
答案 0 :(得分:3)
我认为问题在于您使用event.keyCode
,并非在所有浏览器中都使用event.charCode
。有些浏览器会使用event.which
甚至不同的event.which
,这可能会受到您使用的支持。无论如何,使用jQuery从事件中获取keycode的正常方法是使用event
。
jQuery规范化传递给事件处理程序的event
对象并修复这样的“问题”,这样您就不用担心了。同时,它似乎复制了一些原始事件的属性(“原始事件中的大多数属性被复制并标准化为新的事件对象。” - 来自jQuery API文档)。这可能就是为什么它为其他人评论/回答“工作”的原因。传递给处理程序的event.which
参数已由jQuery生成/规范化,并且将使用正确的属性提供您需要的所有内容。但正确的方法是使用$(document).ready(function () {
$(document).on("keyup", function (event) {
if (event.which == 13) {
$("#clicking").trigger('click');
}
});
});
来获取事件的规范化密钥代码。 http://api.jquery.com/event.which/
{{1}}
答案 1 :(得分:0)
我创建了这个JSFiddle:http://jsfiddle.net/egzsf/ 它完美运行我只为Internet Explorer添加了一个备用。
你的弹出窗口是什么样的?也许这是一个iFrame,这将是一个合乎逻辑的解释。
代码:
<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');
}
})
});
更好的选择是使用e.which
答案 2 :(得分:0)
我希望以下代码可以帮助你 代码:
<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();
}
})
});