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

How to prevent HREF (which calls JS function) from being triggered when "Enter" key is pressed?

本文关键字:HREF 调用 函数 JS 何防止 Enter      更新时间:2023-09-26

我遇到了一个问题。

我有一个href,当我单击它时,它会调用javascript函数"delete_element_on_page"。

因此,当我用鼠标单击 HREF 时,一切都很好,函数被调用。

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

我怎样才能防止这种情况发生?

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

  1. 停用回车键以触发 HREF 的点击--> 这可能吗?如果是这样,在代码复杂性/兼容性等方面值得我花时间。

非常感谢:)

您可以绑定事件并避免将 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>

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

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

可以通过jquery绑定点击事件处理它,不建议使用href调用js函数:

$("a#id").click(function(){
 // the code goes here;
})