当按下“Enter”键时,如何防止触发HREF(调用JS函数)?

时间:2012-04-21 04:13:17

标签: javascript jquery

我正面临一个问题。

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

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

但是,因为HREF具有焦点,如果继续按下我的回车键,则会一次又一次地调用该函数,从而导致不希望的结果。

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

我在考虑 1.调用函数时模糊对href的关注 - >我可以这样做,但这意味着我必须为每一个HREF手动执行此操作,因为jquery.blur只能在单个元素级别触发。 - >或者,是否有一个javascript相当于我可以做一个通用模糊,无论哪个元素是焦点?

OR

  1. 取消激活点击HREF的输入键 - >这甚至可能吗?如果是这样,在代码复杂性/兼容性等方面值得我花时间。
  2. 非常感谢:)

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

你可以通过jquery绑定click事件来处理它,不推荐使用href来调用js函数:

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

 // the code goes here;

})