Вимкнено тег href


264

Хоча це посилання вимкнено, його все ще можна натискати.

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

Чи можу я зробити його неможливим для натискання, якщо його відключено? Чи потрібно використовувати JavaScript обов’язково?



Просто для уточнення: я здогадуюсь, що ви маєте на увазі, що ви відключили посилання, але подія "натискання" все ще спрацьовує?
Леві Хаквіт

2
Ви можете використовувати pointer-події: none; in css
ppsreejith

3
Ви можете використовувати prevenDefault (); stackoverflow.com/questions/1357118 / ...
Ciack404

Але чому б просто не видалити атрибут href?
MrBoJangles

Відповіді:


234

Немає відключеного атрибута для гіперпосилань. Якщо ви не хочете, щоб щось було пов’язано, вам потрібно буде повністю видалити <a>тег або видалити його hrefатрибут.


13
Це працює, але я вважаю це поганим UX, якщо залишити наявний CSS на ньому. Користувач натисне на нього і подумає, що щось порушено. Ніколи не слід дозволяти користувачеві плутатись з приводу того, що відбувається.
agm1984

Просто додавання курсору: немає; до відповідного посилання, здається, досягається стільки ж, скільки і курсору: немає; покажчик-події: немає; . . . . У будь-якому випадку це дозволяє змінити сторінку на одне сторінок додатка для мене.
Багажник

2
Посилання все одно буде орієнтоване і "натискає" (використовуючи Enter) за допомогою навігації по клавіатурі, навіть якщо ви використовуєте курсор CSS або вказівник події, що, ймовірно, погано, якщо ви намагаєтесь вимкнути щось: Видаліть атрибут href або перетворите його на span
Том Золотий

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+ і більше
Патрік Гіллерт

31
Якщо зосередити увагу на тезі посилання за допомогою клавіші табуляції та натиснути Enter, це властивість не працює.
Маджід Басіраті

2
Відповідь повинна бути лише в тому випадку, якщо вам не байдуже IE9-10
Рінго

1
Це також вимикає подію наведення курсору, що означає, що стилізація курсору не працює. (<span> & # x20E0; </span> <- нічого цього на вашому відключеному посиланні.)
Seth Battin

2
також використовують непрозорість для розмежування активних та відключених посилань. opacity: 0.5;
Аамер Шахзад

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

Це також приємний штрих, якщо ви все ще хочете зберегти функцію клацання правою кнопкою миші, як "скопіювати посилання"
Розробник SPM

18

<a>Тег не має disabledатрибут, це просто для <input>с (і <select>з і <textarea>с).

Щоб "відключити" посилання, ви можете видалити його hrefатрибут або додати обробник кліків, який повертає помилку.


@rocket Чи є якісь наслідки для видалення атрибута href? Я маю на увазі, це має бути обов'язковим атрибутом. Не те, що подібні речі здаються важливими в наш час.
Рінго

@Ringo: Видалення hrefкурсору може не змінити курсор, якщо навести на нього курсор миші.
Ракета Hazmat

11

Щоб <a>позбутися цього, потрібно видалити тег.

або спробуйте використовувати: -

  <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

Поради 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як це (потрібно, щоб діва охоплював a і не має 0 ширини / висоти):

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

де:

.disabled {
    pointer-events: none;
}

Ви також можете застосувати стиль "pointer-events: none" безпосередньо до тегу <a>, наприклад, додавши клас .disabled з javascript, коли ви хочете його відключити. Обгортання <div> не потрібно.
Les Nightingill

Обгортання не потрібно, як показано тут: https://jsfiddle.net/d1owm1d0/1/ для хрому, фаєрфоксу та сафарі. Ви використовуєте інший веб-переглядач, де не виходить моя демонстрація?
Les Nightingill

@LesNightingill Якщо а-тег обертає що - то він не працює: jsfiddle.net/d9gwgdyf
Феруса

це правильно @Ferus. Я не впевнений, чому це правда.
Les Nightingill

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

1
Цей Кодекс працює на клацання правою кнопкою миші. Отже, це не точне рішення.
Лахан

4

ви можете відключити посилання, використовуючи JavaScript під час виконання, використовуючи цей код

$ ('. page-link'). css ("покажчик-події", "немає");


Пізно до партії, але це також видаляє будь-який css курсору. У моєму випадку я використовую "курсор: не дозволено", якщо посилання вимкнено.
Стів


3

Можна імітувати відключений атрибут у <a>тезі.

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

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


3

У мене є один:

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

Сподіваюся, це допоможе вам;)


1
Привіт, Веренверлівіц, ласкаво просимо. Приємно, не думав, що ти будеш першою людиною з такою відповіддю через 7-8 років після!
Tiago Martins Peres 李大仁

2

Ми не можемо відключити його безпосередньо, але ми можемо зробити наступне

  1. додати type="button".
  2. видалити href=""атрибут.
  3. Додайте 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

Використовуйте кнопки та посилання правильно.

• Кнопки активують сценарій функціональності на веб-сторінці (діалоги, розширення / згортання регіонів).

• Посилання переносять вас в інше місце, або на іншу сторінку, або на інше місце на одній сторінці.

Якщо ви будете дотримуватися цих правил, не буде жодного сценарію, коли вам потрібно буде відключити посилання. Навіть якщо ви зробите посилання, вигляд буде відключений і він чистий onclick

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

Ви не розглядаєте доступність, і читачі екрану будуть читати його як посилання, а люди з вадами зору будуть постійно цікавитись, чому посилання не працює.


1

Якщо ви використовуєте WordPress, я створив плагін, який може робити це та багато іншого, не знаючи, як щось кодувати. Все, що вам потрібно зробити, - це додати селектор посилань (ів), які ви хочете відключити, а потім вибрати "Вимкнути всі посилання за допомогою цього селектора на новій вкладці". зі спадного меню, яке з’явиться, та натисніть на оновлення.

Клацніть тут, щоб переглянути gif, який це демонструє

Ви можете отримати безкоштовну версію з репозиторію плагінів WordPress.org, щоб випробувати її.


1

Ось різні способи відключення тегу:

<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

Я бачу, що тут вже розміщено багато відповідей, але я не думаю, що все ще існує чіткого, який поєднує вже згадані підходи до того, з ким я знайшов роботу. Це робиться для того, щоб посилання виглядало відключеним, а також не перенаправляло користувача на іншу сторінку.

Ця відповідь передбачає, що ви використовуєте jquery та bootstrap , і використовуєте іншу властивість, щоб тимчасово зберігати 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. У моєму випадку я використовую кутовий та ng-інвалід для гармошки Jquery, і мені потрібно відключити секції.

Тому я створив невеликий 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 без поважних причин для цього.
Марк Амері

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

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

Або

2) Дізнайтеся, як увімкнути javascript за допомогою html або js у веб-переглядачах. або створити користувача, що повідомляє спливаюче вікно, щоб увімкнути використання JavaScript перед використанням веб-сайту

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.