如果执行onclick,如何禁用HREF?

Sup*_*tar 80 html javascript anchor onclick href

我有一个锚 HREFONCLICK属性进行设置.如果单击并启用Javascript,我希望它只执行ONCLICK并忽略HREF.同样,如果Javascript被禁用或不受支持,我希望它遵循HREFURL并忽略ONCLICK.下面是我正在做的一个例子,它将执行JS并同时跟踪链接(通常执行JS然后页面更改):

<A HREF="http://example.com/no-js-login" ONCLICK="yes_js_login()">Log in</A>
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?

我希望得到一个Javascript答案,但我会接受任何方法,只要它有效,特别是如果这可以用PHP完成.我已经读过" 一个href链接执行并在javascript onclick函数能够完成之前重定向页面 ",但它只是延迟HREF,但并没有完全禁用它.我也在寻找更简单的东西.

Chr*_*ier 56

    yes_js_login = function() {
         // Your code here
         return false;
    }
Run Code Online (Sandbox Code Playgroud)

如果返回false,则应该阻止默认操作(转到href).

编辑:抱歉这似乎不起作用,您可以执行以下操作:

<a href="http://example.com/no-js-login" onclick="yes_js_login(); return false;">Link</a>
Run Code Online (Sandbox Code Playgroud)

  • 或者使用`onclick ="return yes_js_login();"```yes_js_login`返回`false` (11认同)
  • 此处提出的所有变体都不适用于Chrome. (4认同)

小智 43

如果先在onclick属性中放置return,则可以使用第一个未编辑的解决方案:

<a href="https://example.com/no-js-login" onclick="return yes_js_login();">Log in</a>

yes_js_login = function() {
     // Your code here
     return false;
}
Run Code Online (Sandbox Code Playgroud)

示例:https://jsfiddle.net/FXkgV/289/

  • 这节省了很多时间。 (2认同)

Buk*_*ksy 31

只需禁用默认浏览器行为preventDefaultevent在HTML中传递即可.

<a href=/foo onclick= yes_js_login(event)>Lorem ipsum</a>

yes_js_login = function(e) {
  e.preventDefault();
}
Run Code Online (Sandbox Code Playgroud)

  • 返回 false 在聚合物中不起作用...上述解决方案确实有效...谢谢 (2认同)

And*_*rew 14

<a href="http://www.google.com" class="ignore-click">Test</a>
Run Code Online (Sandbox Code Playgroud)

用jQuery:

<script>
    $(".ignore-click").click(function(){
        return false;
    })
</script>
Run Code Online (Sandbox Code Playgroud)

用JavaScript

<script>
        for (var i = 0; i < document.getElementsByClassName("ignore-click").length; i++) {
            document.getElementsByClassName("ignore-click")[i].addEventListener('click', function (event) {
                event.preventDefault();
                return false;
            });
        }
</script>
Run Code Online (Sandbox Code Playgroud)

您可以将类分配给.ignore-click您喜欢的元素,并忽略这些元素的单击


mis*_*non 13

你可以使用这个简单的代码:

<a href="" onclick="return false;">add new action</a><br>
Run Code Online (Sandbox Code Playgroud)


小智 7

尝试使用javascript:void(0)如下-

<a href="javascript:void(0)" onclick="...">Text</a>


小智 5

如果你传递一个这样的事件参数,它会更简单:

<a href="#" onclick="yes_js_login(event);">link</a>
Run Code Online (Sandbox Code Playgroud)
function yes_js_login(e) {
    e.stopImmediatePropagation();
}
Run Code Online (Sandbox Code Playgroud)

  • 那对我不起作用。我必须使用 e.preventDefault() (2认同)