禁用 href 标签

396

尽管该链接已被禁用,但它仍然是可点击的。

<a href="/" disabled="disabled">123n</a>

如果禁用了,我可以使它不可点击吗?是否必须使用JavaScript?


3
请参考 https://dev59.com/G3I95IYBdhLWcg3w7CnL ,使用CSS禁用一个链接。 - Fred Foo
仅供澄清:我的猜测是你已经禁用了链接,但"点击"事件仍然触发了? - Levi Hackwith
2
你可以在CSS中使用pointer-events:none;。 - ppsreejith
4
你可以使用 preventDefault()。https://dev59.com/RXM_5IYBdhLWcg3wfTO7 - Ciack404
但是为什么不直接删除href属性呢? - MrBoJangles
30个回答

2

正确使用按钮和链接。

• 按钮在网页上激活脚本功能(对话框,展开/折叠区域)。

• 链接将您带到另一个位置,可以是不同的页面或同一页面上的不同位置。

如果您遵循这些规则,则不会出现需要禁用链接的情况。即使您使链接看起来在视觉上被禁用并且在onclick事件中为空。

<a href="" ng-click="Ctrl._isLinkActive && $ctrl.gotoMyAwesomePage()"

您不会考虑辅助功能和屏幕阅读器将其读作链接,视力障碍者将继续想知道为什么链接无法工作。


2

以下是禁用a标签的几种方法:

<a >Link Text</a> remove the href from your anchor tag
<a href=”javascript:void(0)”/>Link text</a> put javascript:void(0) in href
<a href="/" onclick="return false;">Link text</a> using return false

As there is no disabled attributes for anchor tag. If you want to stop anchor tag behavior inside a jQuery function than you can use the the below line in the start of the function :

$( "a" ).click(function( e ) {
e.preventDefault();
$( "<div>" )
.append( "default " + e.type + " prevented" )
.appendTo( "#log" );
});

event.preventDefault()


1
如果您需要使用JavaScript在Laravel上禁用链接,这是我的解决方案:
链接(blade.php):
<a href='/link/to/path' class='btn btn-primary mt-3' onclick='disableLink(this)'>Confirmar</a>

CSS文件

.isDisabled {
    cursor: not-allowed;
    opacity: 0.5;
}

a[aria-disabled="true"] {
    color: currentColor;
    display: inline-block; /* For IE11/ MS Edge bug */
    pointer-events: none;
    text-decoration: none;
}

.js文件

function disableLink(link) {
    // 1. Add isDisabled class to parent element
    link.parentElement.classList.add('isDisabled');
    // 2. Store href so we can add it later
    link.setAttribute('data-href', link.href);
    // 3. Set aria-disabled to 'true'
    link.setAttribute('aria-disabled', 'true');
}

function enableLink(link) {
    // 1. Remove 'isDisabled' class from parent span
    link.parentElement.classList.remove('isDisabled');
    // 2. Set href
    link.href = link.getAttribute('data-href');
    // 3. Remove 'aria-disabled', better than setting to false
    link.removeAttribute('aria-disabled');
}

参考资料:https://css-tricks.com/how-to-disable-links/

这篇文章介绍了如何禁用链接。在网页设计中,有时需要禁用链接以避免用户误操作或者保护敏感信息。可以通过CSS或JavaScript来禁用链接,具体方法请参照上述链接中的说明。

1
如果您使用WordPress,则我创建了一个插件,可以在不需要编写任何代码的情况下完成此操作以及更多其他操作。您只需要添加要禁用的链接的选择器,然后从出现的下拉菜单中选择“在新选项卡中禁用具有此选择器的所有链接”,然后单击更新即可。 点击此处查看演示gif图片 您可以从WordPress.org插件存储库获取免费版本进行尝试。

0

href标签中的任何内容都会在鼠标悬停时显示在浏览器窗口的左下角。

我个人认为向用户显示javascript:void(0)之类的东西是丑陋的。

相反,不要使用href,用jQuery/其他工具进行操作,并添加样式规则(如果您仍然需要它看起来像链接):

a {
    cursor:pointer;
}

-1
如果您只想暂时禁用链接但保留 href 以便稍后启用(这正是我想要的),我发现所有浏览器都使用第一个 href。因此,我可以这样做:
<a class="ea-link" href="javascript:void(0)" href="/export/">Export</a>

这是无效的HTML,如https://dev59.com/_F8d5IYBdhLWcg3w41Yp所述。如果您的动机只是为了保留href以便稍后轻松编辑源代码以恢复它,则有一些方法可以做到这一点,而不涉及违反规范,例如使用注释。我建议不要没有充分理由就编写无效的HTML。 - Mark Amery

-1

你可以通过返回false来禁用锚标签。在我的情况下,我正在使用Angular和ng-disabled为Jquery手风琴进行操作,我需要禁用某些部分。

因此,我创建了一个小的JavaScript代码片段来解决此问题。

       <a class="opener" data-toggle="collapse"
                   data-parent="#shipping-detail"
                   id="shipping-detail-section"
                   href="#shipping-address"
                   aria-expanded="true"
                   ng-disabled="checkoutState.addressSec">
                   Shipping Address</a>
     <script>
          $("a.opener").on("click", function () {
           var disabled = $(this).attr("disabled");
           if (disabled === 'disabled') {
            return false;
           }
           });
     </script>

-1

适合我的变量:

<script>
  function locker(){
    if ($("a").hasClass("locked")) {
         $("a").removeClass('locked').addClass('unlocked');
         $("a").attr("onClick","return false");
    } else {
         $("a").css("onclick","true");
         $("a").removeClass('unlocked').addClass('locked');
         $("a").attr("onClick","");
    }
  }
</script>

<button onclick="locker()">unlock</button>

<a href="http://some.site.com" class="locked">
  <div> 
      .... 
  <div>
</a>

-1

<a href="/" disabled="true" onclick="return false">123</a>

只是补充一下:这通常有效,但如果用户在浏览器中禁用了JavaScript,则无法正常工作。
1)您可以选择在锚标记上使用Bootstrap 3类来禁用href标记,在集成Bootstrap 3插件后执行。

<a href="/" class="btn btn-primary disabled">123n</a>

或者

2)学习如何在浏览器中使用HTML或JS启用JavaScript,或创建一个弹出窗口告诉用户在使用网站之前启用JavaScript。


-3

有一种简单而干净的方法,如下:

<a href="/shopcart/">

  <button class="btn" disabled> Make an Order </button>

</a>

默认情况下,在<button>上使用disabled属性不会让点击事件传递到<a>元素。因此,<a>元素甚至不知道发生了一些点击事件。通过添加/删除<button>上的disabled属性来进行操作。


<a href="/shopcart/" class="btn"> 下订单</a> - Adeel Ahmed Baloch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接