Href-Tag deaktiviert


264

Obwohl dieser Link deaktiviert ist, kann er weiterhin angeklickt werden.

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

Kann ich es nicht anklickbar machen, wenn es deaktiviert ist? Sollte ich unbedingt JavaScript verwenden?



Nur zur Verdeutlichung: Ich vermute, Sie meinen, Sie haben den Link deaktiviert, aber das "Klick" -Ereignis wird immer noch ausgelöst.
Levi Hackwith

2
Sie können die Zeigerereignisse verwenden: none; in CSS
Ppsreejith

3
Sie können PreventDefault () verwenden. stackoverflow.com/questions/1357118/…
Ciack404

Aber warum nicht einfach das href-Attribut entfernen?
MrBoJangles

Antworten:


234

Es gibt kein deaktiviertes Attribut für Hyperlinks. Wenn Sie nicht möchten, dass etwas verknüpft wird, müssen Sie das <a>Tag vollständig entfernen oder sein hrefAttribut entfernen .


13
Dies funktioniert, aber ich würde es als schlechtes UX betrachten, wenn Sie das vorhandene CSS darauf belassen. Der Benutzer wird darauf klicken und denken, dass etwas kaputt ist. Sie sollten niemals zulassen, dass der Benutzer verwirrt wird, was gerade passiert.
agm1984

Einfach Cursor hinzufügen: keine; auf den entsprechenden Link scheint so viel zu erreichen wie der Cursor: keiner; Zeigerereignisse: keine; . . . . Auf jeden Fall ermöglicht es mir einen Seitenwechsel auf einer einseitigen App-Site.
Kofferraum

2
Der Link wäre weiterhin fokussierbar und "klickbar" (mit der Eingabetaste) über die Tastaturnavigation, selbst wenn Sie CSS-Cursor oder Zeigerereignisse verwenden. Dies ist wahrscheinlich schlecht, wenn Sie versuchen, etwas zu deaktivieren. Entfernen Sie entweder das href-Attribut oder verwandeln Sie es in ein span
Tom Golden

3
Sie können auch onclick="return false;"das Ankertag hinzufügen und möglicherweise ein titleAttribut hinzufügen , das erklärt, dass der Link ungültig ist.
Craig London

1
Ich glaube auch, hrefdass <a>es nicht ADA-konform wäre , einfach das zu löschen und das zu verlassen .
Faultier Freund

351

Mit Hilfe von CSS deaktivieren Sie den Hyperlink. Versuchen Sie das Folgende

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


4
Bitte beachten Sie, dass dies nur in Internet Explorer 11+
Patrick Hillert

31
Wenn Sie sich mit der Tabulatortaste auf das Link-Tag konzentrieren und die Eingabetaste drücken, funktioniert diese Eigenschaft nicht.
Majid Basirati

2
Sollte nur die Antwort sein, wenn Sie sich nicht für IE9-10
Ringo

1
Dadurch wird auch das Hover-Ereignis deaktiviert, was bedeutet, dass das Cursor-Styling nicht funktioniert. (<span> & # x20E0; </ span> <- nichts davon auf Ihrem deaktivierten Link.)
Seth Battin

2
Verwenden Sie auch die Deckkraft, um zwischen aktiven und deaktivierten Links zu unterscheiden. opacity: 0.5;
Aamer Shahzad


70

Sie können eine dieser Lösungen verwenden:

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

Versuche dies:

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

Richtig, ich benutze immer href = "javascript: void (0)"
Jan Hamara

Dies ist auch eine nette Geste, wenn Sie die Funktion des Rechtsklicks wie "Link kopieren"
Developer SPM

18

Das <a>Tag hat kein disabledAttribut, das ist nur für <input>s (und <select>s und <textarea>s).

Um einen Link zu "deaktivieren", können Sie sein hrefAttribut entfernen oder einen Klick-Handler hinzufügen, der false zurückgibt.


@rocket Gibt es irgendwelche Auswirkungen des Entfernens des href-Attributs? Ich meine, es soll ein obligatorisches Attribut sein. Nicht, dass so etwas heutzutage viel zu bedeuten scheint.
Ringo

@Ringo: Durch Entfernen des hrefkann sich der Cursor möglicherweise nicht ändern, wenn Sie mit der Maus darüber fahren.
Rocket Hazmat

11

Sie müssen das <a>Tag entfernen , um dies zu beseitigen .

oder versuchen Sie es mit: -

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

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

Tipps 1: Verwenden von CSS pointer-events: none;

Tipps 2: Verwenden von JavaScript javascript:void(0) (Dies ist eine bewährte Methode)

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

Tipps 1: Verwenden von Jquery $('selector').attr("disabled","disabled");


9

Nur CSS: Dadurch wird der Link aus dem entfernt href.

.disable { 
    pointer-events: none; 
    cursor: default; 
}

5

Wenn Sie ein Elternteil haben, pointer-events: nonewird das Kind a-tagwie folgt deaktiviert (erfordert, dass das div das a abdeckt und nicht 0 Breite / Höhe hat):

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

wo:

.disabled {
    pointer-events: none;
}

Sie können den Stil "pointer-events: none" auch direkt auf das <a> -Tag anwenden, indem Sie beispielsweise die Klasse .disabled mit Javascript hinzufügen, wenn Sie sie deaktivieren möchten. Ein Umbruch <div> ist nicht erforderlich.
Les Nightingill

Wrap nicht erforderlich, wie hier gezeigt: https://jsfiddle.net/d1owm1d0/1/ für Chrome, Firefox und Safari. Verwenden Sie einen anderen Browser, in dem meine Demo fehlschlägt?
Les Nightingill

@LesNightingill Wenn das a-Tag etwas umschließt,
Ferus

das ist richtig @Ferus. Ich bin mir nicht sicher, warum das so ist.
Les Nightingill

4
$(document).ready(function() {
   $('a').click(function(e) {
     e.preventDefault();
  });
});

1
Dieser Code arbeitet mit Rechtsklick. Es ist also keine exakte Lösung.
Lakhan

4

Mit diesem Code können Sie die Verknüpfung mithilfe von Javascript zur Laufzeit deaktivieren

$ ('. page-link'). css ("Zeigerereignisse", "keine");


Spät zur Party, aber dies entfernt auch alle Cursor-CSS. In meinem Fall verwende ich den "Cursor: nicht erlaubt", wenn ein Link deaktiviert ist.
Steve


3

Sie können das deaktivierte Attribut für ein <a>Tag emulieren .

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

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


3

Ich habe eine:

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

Hoffe es wird dir helfen;)


1
Hallo Werenverlivitz, herzlich willkommen. Schön, ich hätte nicht gedacht, dass Sie 7-8 Jahre später die erste Person mit einer solchen Antwort sein würden!
Tiago Martins Peres 24

2

Wir können es nicht direkt deaktivieren, aber wir können Folgendes tun

  1. hinzufügen type="button".
  2. Entfernen Sie das href=""Attribut.
  3. disabledFügen Sie ein Attribut hinzu , damit angezeigt wird, dass es durch Ändern des Coursers deaktiviert und abgeblendet wird.

Das Folgende ist ein Beispiel

<?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

Ich konnte das gewünschte Ergebnis mit einer ng-href-ternären Operation erzielen

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

wo

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

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

1

Verwenden Sie Schaltflächen und Links richtig.

• Schaltflächen aktivieren die Skriptfunktionalität auf einer Webseite (Dialoge, Bereiche erweitern / reduzieren).

• Links führen Sie zu einem anderen Ort, entweder zu einer anderen Seite oder zu einem anderen Ort auf derselben Seite.

Wenn Sie diese Regeln befolgen, gibt es kein Szenario, in dem Sie einen Link deaktivieren müssen. Auch wenn Sie einen Link visuell deaktiviert und leer anklicken lassen

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

Sie werden die Barrierefreiheit nicht in Betracht ziehen und Screenreader werden sie als Link lesen und sehbehinderte Menschen werden sich immer wieder fragen, warum der Link nicht funktioniert.


1

Wenn Sie WordPress verwenden, habe ich ein Plugin erstellt, das dies und vieles mehr kann, ohne wissen zu müssen, wie man etwas codiert. Sie müssen lediglich den Selektor der Links hinzufügen, die Sie deaktivieren möchten, und dann "Alle Links mit diesem Selektor in einem neuen Tab deaktivieren" auswählen. Klicken Sie im angezeigten Dropdown-Menü auf Aktualisieren.

Klicken Sie hier, um ein GIF anzuzeigen, das dies demonstriert

Sie können die kostenlose Version aus dem WordPress.org Plugin-Repository herunterladen , um sie auszuprobieren.


1

Es gibt verschiedene Möglichkeiten, das a-Tag zu deaktivieren:

<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

Da es keine deaktivierten Attribute für das Ankertag gibt. Wenn Sie das Verhalten von Ankertags innerhalb einer jQuery-Funktion stoppen möchten, können Sie die folgende Zeile am Anfang der Funktion verwenden:

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

event.preventDefault ()


1

Ich sehe, dass hier bereits eine Menge Antworten veröffentlicht wurden, aber ich glaube, es gibt noch keine eindeutigen, die die bereits erwähnten Ansätze mit denen kombinieren, die ich für richtig befunden habe. Dies dient dazu, den Link deaktiviert anzuzeigen und den Benutzer nicht auf eine andere Seite umzuleiten.

Diese Antwort setzt voraus, dass Sie jquery und bootstrap verwenden , und verwendet eine andere Eigenschaft, um die hrefEigenschaft vorübergehend zu speichern, während sie deaktiviert ist.

//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

Alles im href- Tag wird unten links im Browserfenster angezeigt, wenn Sie mit der Maus darüber fahren.

Ich persönlich finde es schrecklich , wenn dem Benutzer so etwas wie Javascript: void (0) angezeigt wird.

Lassen Sie stattdessen href aus, zaubern Sie mit jQuery / was auch immer und fügen Sie eine Stilregel hinzu (falls Sie sie noch benötigen, um wie ein Link auszusehen):

a {
    cursor:pointer;
}

0

Die beste Antwort ist immer die einfachste. Keine Codierung erforderlich.

Wenn das (a) Ankertag kein href-Attribut hat, ist es nur ein Platzhalter für einen Hyperlink. Unterstützt von allen Browsern!

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


-1

Sie können Ankertags deaktivieren, indem Sie false zurückgeben. In meinem Fall verwende ich eckig und ng-deaktiviert für ein Jquery-Akkordeon und muss die Abschnitte deaktivieren.

Also habe ich ein kleines js-Snippet erstellt, um dies zu beheben.

       <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

Wenn Sie den Link nur vorübergehend deaktivieren möchten, aber die href dort lassen, um sie später zu aktivieren (was ich tun wollte), habe ich festgestellt, dass alle Browser die erste href verwenden. Daher konnte ich tun:

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

Dies ist ungültiges HTML, wie unter stackoverflow.com/q/26341507/1709587 beschrieben . Wenn Ihre Motivation nur darin besteht, die href in Ihrem Quellcode beizubehalten, damit Sie Ihre Quelle später leicht bearbeiten können, um sie wiederherzustellen, gibt es Möglichkeiten, die keine Verletzung der Spezifikation beinhalten, z. B. die Verwendung eines Kommentars. Ich würde empfehlen, ungültiges HTML wie dieses nicht ohne triftigen Grund zu schreiben.
Mark Amery

-1

Variante, die zu mir passt:

<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>

Nur hinzufügen: Dies funktioniert im Allgemeinen, funktioniert jedoch nicht, wenn der Benutzer Javascript im Browser deaktiviert hat.

1) Sie können optional die Bootstrap 3-Klasse für Ihr Ankertag verwenden, um das href-Tag zu deaktivieren, nachdem Sie das Bootstrap 3-Plugin do integriert haben

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

Oder

2) Erfahren Sie, wie Sie Javascript mithilfe von HTML oder JS in Browsern aktivieren. oder erstellen Sie ein Popup, in dem Sie dem Benutzer mitteilen, dass er Javascript aktivieren soll, bevor Sie die Website verwenden

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.