Etiqueta href desativada


266

Embora esse link esteja desativado, ele ainda pode ser clicado.

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

Posso torná-lo não clicável se estiver desativado? Devo usar JavaScript necessariamente?



Apenas para esclarecimento: acho que você quer dizer que desativou o link, mas o evento "click" ainda é acionado?
Levi Hackwith

2
Você pode usar os eventos-ponteiro: nenhum; em css
ppsreejith 19/12/12

3
Você pode usar preventDefault (); stackoverflow.com/questions/1357118/...
Ciack404

Mas por que não apenas remover o atributo href?
MrBoJangles 10/07/19

Respostas:


234

Não há atributo desabilitado para hiperlinks. Se você não deseja que algo seja vinculado, será necessário remover <a>completamente a tag ou remover seu hrefatributo.


13
Isso funciona, mas eu consideraria UX ruim se você deixar o CSS existente nele. O usuário clicará nele e acha que algo está quebrado. Você nunca deve deixar o usuário ficar confuso sobre o que está acontecendo.
agm1984

Apenas adicionando cursor: nenhum; para o link relevante parece atingir tanto quanto o cursor: nenhum; eventos-ponteiro: nenhum; . . . . De qualquer forma, está permitindo uma alteração de página em um site de aplicativo de página única para mim.
Trunk

2
O link ainda poderá ser focado e "clicável" (usando Enter) usando a navegação do teclado, mesmo se você usar eventos de cursor ou ponteiro CSS, o que provavelmente é ruim se você estiver tentando desativar algo. Remova o atributo href ou transforme-o em um span
Tom Golden

3
Você também pode adicionar onclick="return false;"à tag anchor e talvez adicionar um titleatributo que explique que o link não é válido.
Craig London

1
Além disso, acredito que simplesmente limpar hrefe deixar o <a>arquivo não seria compatível com a ADA.
SlothFriend 10/10/19

353

Com a ajuda do css, você desabilitará o hiperlink. Experimente o abaixo

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


4
Observe que isso funciona apenas no Internet Explorer 11+
Patrick Hillert

31
Quando o foco for no link tag com a tecla tab e pressione Enter, essa propriedade não funcionará.
precisa saber é o seguinte

2
Só deve ser a resposta se você não se importa com o IE9-10
Ringo

1
Isso também desativa o evento de foco, o que significa que o estilo do cursor não funciona. (<span> & # x20E0;. </ span> <- nada disso no seu link desativado)
Seth Battin

2
use também a opacidade para diferenciar entre links ativos e desativados. opacity: 0.5;
Aamer Shahzad

84

Você pode usar:

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

2
não funcionará se já existe uma função como um manipulador para o evento clique
shukla rahul

70

Você pode usar uma destas soluções:

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

Tente o seguinte:

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

Correto, eu sempre uso href = "javascript: void (0)"
Jan Hamara 27/11/19

Este também é um toque agradável, se você ainda deseja manter a função de clicar com o botão direito do mouse como "copiar link"
Developer SPM

18

A <a>tag não tem um disabledatributo, isso é só para <input>s (e <select>s e <textarea>s).

Para "desativar" um link, você pode remover seu hrefatributo ou adicionar um manipulador de cliques que retorne false.


@rocket Existem implicações na remoção do atributo href? Quero dizer, é suposto ser um atributo obrigatório. Não que esse tipo de coisa pareça importar muito hoje em dia.
Ringo

@Ringo: A remoção do arquivo hrefpode fazer com que o cursor não seja alterado quando você passa o mouse sobre ele.
Rocket Hazmat

11

Você precisa remover a <a>tag para se livrar disso.

ou tente usar: -

  <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

Dicas 1: Usando CSS pointer-events: none;

Dicas 2: Usando JavaScript javascript:void(0) (esta é uma prática recomendada)

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

Dicas 1: Usando o Jquery $('selector').attr("disabled","disabled");


9

Somente CSS: isso remove o link do href.

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

5

Permitir que um pai tenha pointer-events: nonedesabilitará o filho a-tagdessa maneira (requer que a div cubra oa e não tenha 0 largura / altura):

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

Onde:

.disabled {
    pointer-events: none;
}

Você também pode aplicar o estilo "pointer-events: none" diretamente à tag <a>, por exemplo, adicionando a classe .disabled com javascript quando desejar desativá-la. Um empacotamento <div> não é necessário.
Les Nightingill

O envoltório não é necessário, conforme demonstrado aqui: https://jsfiddle.net/d1owm1d0/1/ para chrome, firefox e safari. Você está usando um navegador diferente onde minha demonstração falha?
Les Nightingill

@LesNightingill Se o um-tag envolve algo que não funciona: jsfiddle.net/d9gwgdyf
Ferus

está correto @Ferus. Não sei por que isso é verdade.
Les Nightingill

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

1
Este código está funcionando com o botão direito do mouse. Portanto, não é uma solução exata.
Lakhan 24/02

4

você pode desativar o link usando javascript em tempo de execução usando este código

$ ('. link da página'). css ("eventos-ponteiro", "nenhum");


Tarde para a festa, mas isso também remove qualquer cursor css. No meu caso, eu uso o "cursor: não permitido" se um link estiver desativado.
22419 Steve Steve


3

Você pode emular o atributo desativado em uma <a>tag.

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

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


3

Eu tenho um:

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

Espero que ajude você;)


1
Olá Werenverlivitz, seja bem-vindo. Bom, não achei que você seria a primeira pessoa com essa resposta 7-8 anos depois!
Tiago Martins Peres 李大仁 24/01

2

Não podemos desativá-lo diretamente, mas podemos fazer o seguinte

  1. adicionar type="button".
  2. remova o href=""atributo
  3. adicione o disabledatributo para mostrar que está desativado alterando o cursor e fica esmaecido.

a seguir é um exemplo

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

Consegui alcançar o resultado desejado usando uma operação ternária ng-href

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

Onde

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

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

1

Use botões e links corretamente.

• Os botões ativam a funcionalidade de script em uma página da Web (caixas de diálogo, expandir / recolher regiões).

• Os links levam você para outro local, para uma página diferente ou para um local diferente na mesma página.

Se você seguir essas regras, não haverá cenário em que você precise desativar um link. Mesmo que você faça com que um link pareça visualmente desativado e em branco, clique em

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

Você não considerará a acessibilidade e os leitores de tela o lerão como um link e as pessoas com deficiência visual continuarão se perguntando por que o link não está funcionando.


1

Se você estiver usando o WordPress, criei um plugin que pode fazer isso e muito mais sem precisar saber como codificar nada. Tudo o que você precisa fazer é adicionar o seletor do (s) link (s) que deseja desativar e, em seguida, escolher "Desativar todos os links com esse seletor em uma nova guia". no menu suspenso exibido e clique em atualizar.

Clique aqui para ver um gif que demonstra isso

Você pode obter a versão gratuita no repositório do WordPress.org Plugin para experimentá-lo.


1

Aqui estão várias maneiras de desativar a tag 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

Como não há atributos desativados para a marca âncora. Se você deseja interromper o comportamento da marca âncora dentro de uma função jQuery, pode usar a linha abaixo no início da função:

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

event.preventDefault ()


1

Vejo que já há uma tonelada de respostas postadas aqui, mas não acho que ainda exista uma clara que combine as abordagens já mencionadas na que encontrei para trabalhar. Isso faz com que o link pareça desativado e também não redireciona o usuário para outra página.

Esta resposta assume que você está usando jquery e bootstrap e usa outra propriedade para armazenar temporariamente a hrefpropriedade enquanto desativada.

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

Qualquer coisa na tag href será exibida na parte inferior esquerda da janela do navegador quando você passar o mouse sobre ela.

Pessoalmente, acho que ter algo como javascript: void (0) exibido para o usuário é hediondo.

Em vez disso, deixe o href desativado, faça sua mágica com o jQuery / qualquer outra coisa e adicione uma regra de estilo (se você ainda precisar parecer um link):

a {
    cursor:pointer;
}

0

A melhor resposta é sempre a mais simples. Não há necessidade de qualquer codificação.

Se a tag (a) anchor não tiver atributo href, será apenas um espaço reservado para um hiperlink. Suportado por todos os navegadores!

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


-1

Você pode desativar as tags de âncora retornando false. No meu caso, estou usando angular e ng-disabled para um acordeão Jquery e preciso desativar as seções.

Então, eu criei um pequeno trecho de js para corrigir isso.

       <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

se você quiser apenas desativar temporariamente o link, mas deixar o href lá para ativar mais tarde (que é o que eu queria fazer), descobri que todos os navegadores usam o primeiro href. Daí eu pude fazer:

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

Este é um HTML inválido, conforme descrito em stackoverflow.com/q/26341507/1709587 . Se sua motivação é apenas manter o href no código-fonte, para facilitar a edição posterior do código-fonte para restaurá-lo, existem maneiras de fazer isso que não envolvem violar as especificações, como usar um comentário. Eu recomendaria não escrever HTML inválido como esse sem um motivo sólido para fazê-lo.
Mark Amery

-1

Variante que combina comigo:

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

Apenas adicionando: Isso funciona em geral, mas não funcionará se o usuário tiver desativado o javascript no navegador.

1) Opcionalmente, você pode usar a classe Bootstrap 3 em sua tag anchor para desativar a tag href, depois de integrar o plugin bootstrap 3

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

Ou

2) Aprenda a habilitar o javascript usando html ou js nos navegadores. ou crie um pop-up informando ao usuário para ativar o javascript antes de usar o site

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.