Wyłączony tag href


264

Chociaż ten link jest wyłączony, nadal można go kliknąć.

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

Czy mogę wyłączyć kliknięcie, jeśli jest wyłączone? Czy koniecznie muszę używać JavaScript?



Tylko dla wyjaśnienia: zgaduję, że masz na myśli to, że wyłączyłeś link, ale zdarzenie „kliknięcie” nadal się uruchamia?
Levi Hackwith,

2
Możesz użyć wskaźnika-zdarzeń: brak; in css
ppsreejith,

3
Możesz użyć preventDefault (); stackoverflow.com/questions/1357118/…
Ciack404,

Ale dlaczego po prostu nie usunąć atrybutu href?
MrBoJangles,

Odpowiedzi:


234

Nie ma wyłączonego atrybutu dla hiperłączy. Jeśli nie chcesz, aby coś było połączone, musisz <a>całkowicie usunąć tag lub usunąć jego hrefatrybut.


13
To działa, ale uważam, że to zły UX, jeśli zostawisz na nim istniejący CSS. Użytkownik kliknie go i pomyśli, że coś jest zepsute. Nigdy nie należy pozwalać użytkownikowi mylić się z tym, co się dzieje.
agm1984

Wystarczy dodać kursor: brak; odpowiedni link wydaje się osiągać tyle, co kursor: brak; zdarzenia wskaźnikowe: brak; . . . . W każdym razie umożliwia mi to zmianę strony w witrynie aplikacji na jednej stronie.
Trunk

2
Link nadal byłby aktywny i „klikalny” (używając Enter) przy użyciu nawigacji za pomocą klawiatury, nawet jeśli używasz kursora CSS lub zdarzeń wskaźnika, co prawdopodobnie jest złe, jeśli próbujesz coś wyłączyć albo usuń atrybut href lub zmień go w rozpiętość
Tom Golden

3
Możesz także dodać onclick="return false;"do tagu kotwicy i być może dodać titleatrybut, który wyjaśnia, że ​​link jest nieprawidłowy.
Craig London

1
Ponadto uważam, że samo wyczyszczenie hrefi pozostawienie <a>nie byłoby zgodne z ADA.
SlothFriend,

352

Za pomocą css wyłączysz hiperłącze. Spróbuj poniżej

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


4
Należy pamiętać, że działa to tylko w przeglądarce Internet Explorer 11+
Patrick Hillert

31
Gdy skupisz się na tagu linku za pomocą klawisza Tab i naciśnij Enter, ta właściwość nie działa.
Majid Basirati,

2
Powinien być odpowiedzią, jeśli nie obchodzi Cię IE9-10
Ringo

1
To także wyłącza zdarzenie aktywowania, co oznacza, że ​​styl kursora nie działa. (<span> & # x20E0; </span> <- nic z tego na wyłączonym linku.)
Seth Battin

2
użyj także krycia, aby rozróżnić aktywne i wyłączone łącza. opacity: 0.5;
Aamer Shahzad

84

Możesz użyć:

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

2
nie będzie działać, jeśli istnieje już funkcja obsługi zdarzenia kliknięcia
rahul shukla

70

Możesz użyć jednego z tych rozwiązań:

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

Spróbuj tego:

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

Poprawnie, zawsze używam href = "javascript: void (0)"
Jan Hamara

Jest to również miły akcent, jeśli nadal chcesz zachować funkcję kliknięcia prawym przyciskiem myszy, np. „Skopiuj link”
programista SPM

18

<a>Tag nie posiada disabledatrybut, to tylko dla <input>s (i <select>S i <textarea>S).

Aby „wyłączyć” link, możesz usunąć jego hrefatrybut lub dodać moduł obsługi kliknięć, który zwraca wartość false.


@rocket Czy są jakieś konsekwencje usunięcia atrybutu href? To znaczy, to ma być obowiązkowy atrybut. Nie wydaje się, że tego rodzaju rzeczy mają obecnie duże znaczenie.
Ringo

@Ringo: Usunięcie hrefmoże spowodować, że kursor się nie zmieni po najechaniu na niego kursorem.
Rocket Hazmat

11

Musisz usunąć <a> tag, aby się go pozbyć.

lub spróbuj użyć: -

  <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

Wskazówki 1: Korzystanie z CSS pointer-events: none;

Wskazówki 2: Korzystanie z JavaScript javascript:void(0) (jest to najlepsza praktyka)

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

Wskazówki 1: Korzystanie z Jquery $('selector').attr("disabled","disabled");


9

Tylko CSS: usuwa link z href.

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

5

Zezwolenie rodzicowi na pointer-events: nonewyłączenie dziecka w a-tagten sposób (wymaga, aby div obejmował a i nie miał 0 szerokości / wysokości):

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

gdzie:

.disabled {
    pointer-events: none;
}

Możesz także zastosować styl „pointer-events: none” bezpośrednio do znacznika <a>, na przykład dodając klasę .disabled z javascript, kiedy chcesz go wyłączyć. Zawijanie <div> nie jest konieczne.
Les Nightingill,

Zawijanie nie jest wymagane, jak pokazano tutaj: https://jsfiddle.net/d1owm1d0/1/ dla chrome, firefox i safari. Czy używasz innej przeglądarki, w której nie działa moja wersja demo?
Les Nightingill,

@LesNightingill Jeśli znacznik owija coś, co nie działa: jsfiddle.net/d9gwgdyf
Ferus

to prawda @Ferus. Nie jestem pewien, dlaczego to prawda.
Les Nightingill,

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

1
Ten kod działa po kliknięciu prawym przyciskiem, więc nie jest to dokładne rozwiązanie.
Lakhan

4

możesz wyłączyć link używając javascript w czasie wykonywania, używając tego kodu

$ („. page-link”). css („wskaźniki-zdarzenia”, „brak”);


Późno na imprezę, ale to również usuwa css kursora. W moim przypadku używam „kursora: niedozwolone”, jeśli łącze jest wyłączone.
Steve


3

Możesz emulować wyłączony atrybut na <a>znaczniku.

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

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


3

Mam jeden:

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

Mam nadzieję, że ci to pomoże;)


1
Cześć Werenverlivitz, witam. Fajnie, nie sądziłem, że będziesz pierwszą osobą z taką odpowiedzią po 7-8 latach!
Tiago Martins Peres

2

Nie możemy go wyłączyć bezpośrednio, ale możemy wykonać następujące czynności

  1. dodać type="button".
  2. usuń href=""atrybut
  3. dodaj disabledatrybut, aby pokazać, że jest wyłączony przez zmianę Courser i staje się przygaszony.

Oto przykład

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

Byłem w stanie osiągnąć pożądany rezultat za pomocą operacji trójskładnikowej ng-href

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

gdzie

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

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

1

Używaj przycisków i linków poprawnie.

• Przyciski aktywują funkcje skryptowe na stronie internetowej (okna dialogowe, regiony rozwijania / zwijania).

• Linki prowadzą do innej lokalizacji, do innej strony lub innej lokalizacji na tej samej stronie.

Jeśli będziesz przestrzegać tych zasad, nie będzie żadnego scenariusza, w którym musisz wyłączyć link. Nawet jeśli link wygląda na wizualnie wyłączony i pusty po kliknięciu

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

Nie będziesz brać pod uwagę dostępności, a czytniki ekranu odczytują go jako link, a osoby niedowidzące będą się zastanawiać, dlaczego link nie działa.


1

Jeśli korzystasz z WordPress, stworzyłem wtyczkę, która może to zrobić i wiele więcej bez konieczności znajomości kodowania. Wszystko, co musisz zrobić, to dodać selektor linków, które chcesz wyłączyć, a następnie wybierz „Wyłącz wszystkie linki za pomocą tego selektora w nowej karcie”. z menu rozwijanego, które się pojawi, i kliknij Aktualizuj.

Kliknij tutaj, aby wyświetlić gif, który to pokazuje

Możesz pobrać bezpłatną wersję z repozytorium wtyczek WordPress.org, aby ją wypróbować.


1

Oto różne sposoby wyłączenia tagu:

<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

Ponieważ nie ma wyłączonych atrybutów dla tagu zakotwiczenia. Jeśli chcesz zatrzymać zachowanie tagu zakotwiczenia w funkcji jQuery, możesz użyć poniższego wiersza na początku funkcji:

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

event.preventDefault ()


1

Widzę, że opublikowano tu już mnóstwo odpowiedzi, ale nie sądzę, aby było jeszcze jedno, które łączyłoby wspomniane już podejścia z tym, które okazało się skuteczne. Ma to na celu wyłączenie wyświetlania linku, a także przekierowanie użytkownika na inną stronę.

Ta odpowiedź zakłada, że ​​używasz jquery i bootstrap , i używa innej właściwości do tymczasowego przechowywania hrefwłaściwości, gdy jest wyłączona.

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

Wszystko w znaczniku href wyświetli się w lewym dolnym rogu okna przeglądarki po najechaniu myszą.

Osobiście uważam, że wyświetlanie użytkownikowi czegoś takiego jak javascript: void (0) jest ohydne.

Zamiast tego, zostaw href off, użyj magii z jQuery / cokolwiek innego i dodaj regułę stylu (jeśli nadal potrzebujesz, aby wyglądała jak link):

a {
    cursor:pointer;
}

0

Najlepsza odpowiedź jest zawsze najprostsza. Nie ma potrzeby żadnego kodowania.

Jeśli tag kotwiczący (a) nie ma atrybutu href, jest jedynie symbolem zastępczym hiperłącza. Obsługiwane przez wszystkie przeglądarki!

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


-1

Możesz wyłączyć tagi kotwicy, zwracając wartość false. W moim przypadku używam akordeonu kątowego i ng-wyłączone dla akordeonu Jquery i muszę wyłączyć sekcje.

Więc stworzyłem mały fragment js, aby to naprawić.

       <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

jeśli chcesz tylko tymczasowo wyłączyć link, ale zostaw tam href, aby włączyć później (to właśnie chciałem zrobić), okazało się, że wszystkie przeglądarki używają pierwszego href. Dlatego mogłem zrobić:

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

To jest nieprawidłowy kod HTML, jak opisano na stackoverflow.com/q/26341507/1709587 . Jeśli twoją motywacją jest po prostu trzymanie kodu źródłowego w kodzie źródłowym, aby później łatwo było go edytować, aby go przywrócić, istnieją sposoby, które nie wymagają naruszenia specyfikacji, na przykład użycie komentarza. Odradzam pisanie takich niepoprawnych plików HTML bez uzasadnionego powodu.
Mark Amery

-1

Wariant, który mi odpowiada:

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

Tylko dodawanie: Działa to ogólnie, ale nie zadziała, jeśli użytkownik wyłączył JavaScript w przeglądarce.

1) Opcjonalnie możesz użyć klasy Bootstrap 3 w tagu kotwicy, aby wyłączyć tag href, po zintegrowaniu wtyczki bootstrap 3

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

Lub

2) Dowiedz się, jak włączyć obsługę JavaScript w przeglądarce za pomocą HTML lub JS. lub utwórz wyskakujące okienko z informacją, aby włączyć obsługę javascript przed użyciem witryny

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.