如果执行onclick,如何禁用HREF?
我有一个与HREF
和ONCLICK
属性设置的锚点。 如果点击并启用Javascript,我希望它只执行ONCLICK
并忽略HREF
。 同样,如果JavaScript被禁用或不支持,我希望它遵循HREF
URL并忽略ONCLICK
。 下面是我正在做的一个例子,它将执行JS并同时跟随链接(通常JS被执行,然后页面改变):
<A HREF="http://example.com/no-js-login" ONCLICK="yes_js_login()">Log in</A>
最好的办法是什么?
我希望有一个Javascript的答案,但我会接受任何方法,只要它的工作,特别是如果这可以用PHP来完成。 我已经阅读过“ 在javascript onclick函数完成之前执行并redirect页面的href链接 ”,但是它只会延迟HREF
,但不会完全禁用它。 我也在寻找更简单的东西。
您可以使用第一个未编辑的解决scheme,如果您先将onclick
属性返回:
<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; }
例如: https : //jsfiddle.net/FXkgV/289/
yes_js_login = function() { // Your code here return false; }
如果返回false,则应该阻止默认操作(转到href)。
编辑:对不起,似乎没有工作,你可以做,而不是:
<a href="http://example.com/no-js-login" onclick="yes_js_login(); return false;">Link</a>
只需使用preventDefault
禁用默认浏览器行为,然后在HTML中传递event
。
<a href=/foo onclick= yes_js_login(event)>Lorem ipsum</a>
yes_js_login = function(e) { e.preventDefault(); }
你可以使用这个简单的代码:
<a href="" onclick="return false;">add new action</a><br>
<a href="http://www.google.com" class="ignore-click">Test</a>
与jQuery:
<script> $(".ignore-click").click(function(){ return false; }) </script>
与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>
您可以将类.ignore-click
分配给您喜欢的许多元素,并且单击这些元素将被忽略
如果你传递一个这样的事件参数,那就更简单了:
<a href="#" onclick="yes_js_login(event);">link</a>
function yes_js_login(e) { e.stopImmediatePropagation(); }
我解决了一个情况,我需要一个模板来处理一个普通的URL或一个javascript调用,其中js函数需要对调用元素的引用。 在JavaScript中,“this”仅在表单元素的上下文中作为自引用,例如button。 我不想要一个button,只是一个常规链接的外观。
例子:
<a onclick="http://blahblah" href="http://blahblah" target="_blank">A regular link</a> <a onclick="javascript:myFunc($(this));return false" href="javascript:myFunc($(this));" target="_blank">javascript with self reference</a>
href和onClick属性具有相同的值,当我的javascript调用时,我会在onClick上附加“return false”。 在被调用函数中“返回false”不起作用。
这可能有帮助。 没有JQuery需要
<a href="../some-relative-link/file" onclick="this.href = 'https://docs.google.com/viewer?url='+this.href; this.onclick = '';" target="_blank">
此代码执行以下操作:将相关链接传递给Google文档查看器
- 通过
this.href
获取锚点的完整链接版本 - 打开新窗口的链接。
所以在你的情况下,这可能工作:
<a href="../some-relative-link/file" onclick="this.href = 'javascript:'+console.log('something has stopped the link'); " target="_blank">
这对我工作:
<a href="" onclick="return false;">Action</a>
在我的情况下,我有一个条件,当用户点击“a”元素。 条件是:
如果其他部分有十多个项目,则用户不应该被redirect到其他页面。
如果其他部分的项目less于10个,则应将用户redirect到其他页面。
“a”元素的function取决于其他组件。 点击事件中的代码如下:
var elementsOtherSection = document.querySelectorAll("#vehicle-item").length; if (elementsOtherSection> 10){ return true; }else{ event.preventDefault(); return false; }