禁用的href标签


264

尽管该链接已禁用,但仍然可以单击。

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

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



只是为了澄清一下:我猜您的意思是您已禁用链接,但“点击”事件仍会触发?
Levi Hackwith 2012年

2
您可以使用指针事件:无;在CSS中
ppsreejith 2012年

3
您可以使用preventDefault(); stackoverflow.com/questions/1357118/…–
Ciack404

但是,为什么不删除href属性呢?
MrBoJangles

Answers:


234

没有超链接的禁用属性。如果您不希望链接某些内容,则需要<a>完全删除该标签或删除其href属性。


13
这可行,但是如果您将现有的CSS留在上面,我会认为它是不好的UX。用户将其单击并认为有问题。您绝对不应让用户对正在发生的事情感到困惑。
agm1984 '18

只是添加光标:无;到相关链接似乎达到了与游标一样多的效果:指针事件:无;。。。。无论如何,它为我启用了单页应用程序站点中的页面更改。
干线

2
即使您使用CSS光标或指针事件,该链接仍然可以使用键盘导航来保持焦点和“可单击”(使用Enter),如果您尝试禁用某些功能,则可能会很糟糕,要么删除href属性,要么将其变成一个跨度
Tom Golden

3
您还可以添加onclick="return false;"到锚标记,还可以添加一个title属性,该属性说明链接无效。
克雷格·伦敦

1
另外,我认为简单地清除href和离开<a>将不符合ADA。
SlothFriend,

352

借助CSS,您将禁用超链接。试试下面

a.disabled {
  pointer-events: none;
  cursor: default;
}
<a href="link.html" class="disabled">Link</a>


4
请注意,这只能在Internet Explorer 11+
帕特里克Hillert

31
当使用Tab键将焦点放在链接标记上并按Enter时,此属性无效。
Majid Basirati '16

2
如果您不关心IE9-10,则应该是答案
Ringo

1
这也会禁用悬停事件,这意味着光标样式无效。(<span>&#x20E0; </ span> <-您禁用的链接上都不是。)
赛斯·巴丁

2
还使用不透明度来区分活动链接和禁用链接。opacity: 0.5;
Aamer Shahzad

84

您可以使用:

<a href="/" onclick="return false;">123n</a>

2
如果已经有单击事件处理程序的功能将无法正常工作
rahul shukla

70

您可以使用以下解决方案之一:

的HTML

<a>link</a>

的JavaScript

<a href="javascript:function() { return false; }">link</a>
<a href="/" onclick="return false;">link</a>

的CSS

<a href="www.page.com" disabled="disabled">link</a>

<style type="text/css">
    a[disabled="disabled"] {
        pointer-events: none;
    }
</style>


32

试试这个:

<a href="javascript:void(0)" style="cursor: default;">123n</a>

正确,我总是使用href =“ javascript:void(0)”
Jan Hamara

如果您仍想保留右键单击功能(如“复制链接”),这也是很好的选择
Developer SPM

18

<a>标签不具有disabled的属性,这只是为<input>S(和<select>S和<textarea>S)。

要“禁用”链接,可以删除其href属性,或添加返回false的单击处理程序。


@rocket删除href属性有什么含义吗?我的意思是,这应该是必填属性。如今,那种事情似乎并不重要。
林戈

@Ringo:删除href时,将鼠标悬停在上可能会使光标保持不变。
火箭Hazmat


10

HTML:

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

CSS:

.btn-disabled,
.btn-disabled[disabled] {
  opacity: .4;
  cursor: default !important;
  pointer-events: none;
}

10

提示1:使用CSS pointer-events: none;

提示2:使用JavaScript javascript:void(0) (这是最佳做法)

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

提示1:使用Jquery $('selector').attr("disabled","disabled");



5

让父母拥有pointer-events: none将禁用a-tag像这样的孩子(要求div覆盖a且宽度/高度不为0):

<div class="disabled">
   <a href="/"></a>
</div>

哪里:

.disabled {
    pointer-events: none;
}

您还可以将“ pointer-events:none”样式直接应用于<a>标记,例如,当您想禁用它时,可以通过使用javascript添加.disabled类。不需要包装<div>。
Les Nightingill

不需要包装,如此处所示:chrome,firefox和safari的https://jsfiddle.net/d1owm1d0/1/。您是否在演示失败的其他浏览器上使用?
Les Nightingill

@LesNightingill如果a-tag包装了某些东西,则它不起作用:jsfiddle.net/d9gwgdyf
Ferus

没错,@ Ferus。我不确定为什么会这样。
Les Nightingill


4

您可以使用此代码在运行时使用javascript禁用链接

$('。page-link')。css(“ pointer-events”,“ none”);


晚到聚会,但这也会删除所有光标css。就我而言,如果禁用了链接,则使用“ cursor:not-allowed”。
史蒂夫(Steve)


3

您可以在<a>标签上模拟Disabled属性。

<a href="link.html" disabled="">Link</a>

a[disabled] {
   pointer-events: none;
   cursor: default;
}


3

我有一个:

<a href="#">This is a disabled tag.</a>

希望它能对您有所帮助;)


1
您好Werenverlivitz,欢迎您。很好,没想到您会在7-8年后成为第一个获得此类答案的人!
Tiago Martins Peres李大仁

2

我们不能直接禁用它,但是我们可以执行以下操作

  1. type="button"
  2. 去除 href=""属性。
  3. add disabled属性,因此它表明通过更改课程进程禁用了该属性,并且该属性变暗了。

以下是一个例子

<?php
if($status=="Approved"){ 
?>
  <a type="button" class="btn btn-primary btn-xs" disabled> EDIT
     </a>
  <?php    
}else{
?>
  <a href="index.php" class="btn btn-primary btn-xs"> EDIT
    </a>
  <?php    
}
?>

2

我能够使用ng-href三元运算获得所需的结果

<a ng-href="{{[condition] ? '' : '/'}}" ng-class="{'is-disabled':[condition]}">123n</a>

哪里

a.is-disabled{
   color: grey;
   cursor: default;

   &:hover {
      text-decoration: none;
   }
} 

1

正确使用按钮和链接。

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

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

如果遵循这些规则,则在需要禁用链接时不会有任何情况。即使您使链接看起来在视觉上被禁用并且在单击时空白

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

您不会考虑可访问性,屏幕阅读器会将其视为链接,而视障人士会一直想知道为什么该链接不起作用。



1

以下是禁用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

由于锚标记没有禁用的属性。如果要停止jQuery函数中的锚标记行为,则可以在函数开头使用以下行:

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

event.preventDefault()


1

我看到这里已经发布了大量的答案,但是我认为还没有任何明确的方法可以将已经提到的方法与我发现的方法结合起来。这是为了使链接既显示为禁用状态,又不将用户重定向到另一个页面。

此答案假定您正在使用jquerybootstrap,并href在禁用时使用另一个属性临时存储该属性。

//situation where link enable/disable should be toggled
function toggle_links(enable) {
    if (enable) {
        $('.toggle-link')
        .removeClass('disabled')
        .prop('href', $(this).attr('data-href'))
    }
    else {
        $('.toggle-link')
        .addClass('disabled')
        .prop('data-href', $(this).prop('href'))
        .prop('href','#')
    }
a.disabled {
  cursor: default;
}

0

href中的任何内容鼠标悬停标记中的所有内容都将显示在浏览器窗口的左下方。

我个人认为具有javascript:void(0)向用户显示很可怕。

取而代之的是,取消href,使用jQuery /其他方法处理魔术,并添加样式规则(如果您仍然需要它看起来像一个链接):

a {
    cursor:pointer;
}

0

最佳答案永远是最简单的。无需任何编码。

如果(a)定位标记没有href属性,则它只是超链接的占位符。所有浏览器都支持!

<a href="/">free web counters</a><br  />
<a "/">free web counters</a>


-1

您可以通过返回false来禁用锚标记。在我的情况下,Im为Jquery手风琴使用angular和ng-disabled,我需要禁用这些部分。

所以我创建了一个小js代码段来解决此问题。

       <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

如果您只是想暂时禁用该链接,但是将href留在那里以便以后启用(这是我想做的),我发现所有浏览器都使用第一个href。因此,我能够做到:

<a class="ea-link" href="javascript:void(0)" href="/export/">Export</a>

这是无效的HTML,如stackoverflow.com/q/26341507/1709587所述。如果您的动机只是在源代码中保留href,以便稍后编辑源以恢复它,则很容易做到,这些方法都不会涉及违反规范,例如使用注释。我建议不要在没有充分理由的情况下编写这样的无效HTML。
Mark Amery

-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插件后,可以选择在锚标签上使用Bootstrap 3类禁用href标签。

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

要么

2)了解如何在浏览器中使用html或js启用javascript。或创建一个弹出窗口,告诉用户在使用网站之前启用javascript

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.