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?

Alan Coromano
quelle
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 .

John Conde
quelle
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>

Lakhan
quelle
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
84

Sie können verwenden:

<a href="/" onclick="return false;">123n</a>
CodeLikeBeaker
quelle
2
wird nicht funktionieren, wenn es bereits eine Funktion als Handler für
Klickereignisse gibt
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>

IgniteCoders
quelle
32

Versuche dies:

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

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

Rakete Hazmat
quelle
@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>
Rahul Tripathi
quelle
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;
}
Syed
quelle
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");

venkatskpi
quelle
9

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

.disable { 
    pointer-events: none; 
    cursor: default; 
}
Joel Adams
quelle
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;
}
Ferus
quelle
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();
  });
});
Mahmoud Farahat
quelle
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");

Chintan Mathukiya
quelle
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

Wenn Sie den Zeiger entfernen möchten, können Sie dies mit CSS mithilfe des Cursors tun .

Ahdaniels
quelle
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;
}
Blowsie
quelle
3

In meinem Fall benutze ich

<a href="/" onClick={e => e.preventDefault()}>
Chien Chieh Wang
quelle
3

Ich habe eine:

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

Hoffe es wird dir helfen;)


quelle
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    
}
?>
Assaad Lutf
quelle
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;
   }
} 
Corey Webster
quelle
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.

Sengupta Amit
quelle
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.

Chris Marabate
quelle
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 ()

Mahak Choudhary
quelle
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;
}
owengall
quelle
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;
}
Enigma Plus
quelle
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>

Intergalaktisch
quelle
-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>
Darryl Windsor
quelle
-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>
Angus Walker
quelle
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>
Wurf
quelle
-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

OlaJ
quelle