2012-04-21 91 views
-3

我正面临一个问题。如何在按下“Enter”键时防止触发HREF(调用JS函数)?

我有一个href,当我点击它时调用一个javascript函数“delete_element_on_page”。

所以当我用鼠标点击HREF时,一切都很好,函数被调用。

但是,由于HREF具有焦点,如果继续敲击我的回车键,该功能会一次又一次地被调用,从而导致不期望的结果。

我该如何防止这种情况发生?

我在想 1.模糊焦点的href当我的函数被调用 - >我能做到这一点,但是这将意味着我不得不为每一个HREF手动做到这一点,因为jquery.blur能只能在个别元素级别触发。 - >另外,是否有一个JavaScript的地方,我可以做一个通用的模糊,无论哪个元素是焦点?

OR

  1. 停用从触发HREF的点击 回车键 - >这甚至可能吗?如果是的话,值得我在代码的复杂性/兼容性等方面..

非常感谢:)

回答

1

您可以绑定您的活动,并避免将触发JavaScript的HTML标记内。

使用jQuery(容易和更可靠的方式),你是这样做的:

<script src="http://code.jquery.com/jquery.min.js"></script> 
<script> 
    $("#myelementid").bind("click",function(e){ 
     e.preventDefault(); // important, to prevent trigering the default a href 

     // your code goes here 

     $(this).blur(); 
    }); 
</script> 
+0

谢谢!我不知道这种绑定方式会导致与“输入”键有关的不同行为。 – sprockett 2012-04-21 10:15:07

0

可以绑定单击事件的jQuery处理它,使用的href调用JS功能,不建议:

$("a#id").click(function(){ 

// the code goes here; 

}) 
+0

谢谢!我不知道这种绑定方式会导致与“输入”键有关的不同行为。 – sprockett 2012-04-21 10:14:57

1

上述答案将阻止键盘单击和鼠标单击,这将阻止输入键在该链接上执行任何操作。所以它对应于#2

<a id="fail" href="http://jquery.com">default click action is prevented</a> 
<script> 
$("#fail").keydown(function(event) { 
    event.preventDefault(); 
}); 
</script> 
相关问题