我希望在按下某个键时点击一个链接,我把这个jQuery搞定了:
$('form#form1').bind("keypress", function(e){
if(e.keycode == 13 || e.keyChar == 13 || e.which == 13){
$('.LoginBoxButton a').click();
}
});
它不起作用,我已阅读以下内容解释原因:
记住这一点非常重要 click()不会触发默认值 链接上的行为,即使没有 别的是阻止它。所以你不能 单独使用click()来模拟 用户点击链接并正在进行 带到另一个网址。
但是,您如何模拟用户点击链接并被带到另一个网址?
答案 0 :(得分:4)
你可能会这样:
$('form#form1').bind("keypress", function(e){
if(e.keycode == 13 || e.keyChar == 13 || e.which == 13){
document.location.href = $('.LoginBoxButton a').attr('href');
}
});
答案 1 :(得分:2)
但是,您如何模拟用户点击链接并被带到另一个网址?
这是两件不同的事情:
第一个模拟用户点击,是一个非常低级别的任务。我会选择一个允许它无限制的浏览器。
第二个,将用户带到另一个网址,就像分配您想要的网址document.location.href
一样简单。
所以,而不是
$('.LoginBoxButton a').click();
使用
document.location.href = $('.LoginBoxButton a').attr('href');
希望这有帮助。
答案 2 :(得分:1)
首先jQuery's Event.which 规范化event.keyCode
和event.charCode
- 因此您无需检查keyCode
/ charCode
。
其次决定是否要模拟用户点击元素或仅重定向到其他位置,因为一个和第二个之间存在巨大差异。虽然最后一个只是重定向第一个,但首先执行所有连接的mousedown
/ mouseup
/ click
(按给定顺序)事件。此外,如果click
事件将返回false
,则应阻止重定向。
所以已经给出了第一种情况的代码,但这里是真实模拟的代码:
<a href="test.html">LsINK</a>
<span>ROBOT</span>
$("a").mousedown(function() { alert("mousedown"); })
.mouseup(function() { alert("mouseup"); })
.click(function() { alert("click"); return false; });
$("span").click(function() {
if (false !== $("a").mousedown().mouseup().triggerHandler("click")) {
alert("Redirect to: " + $("a").attr("href"));
//window.location.href = $("a").attr("href");
}
});