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?

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

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

Lakhan
fonte
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>
CodeLikeBeaker
fonte
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>

IgniteCoders
fonte
32

Tente o seguinte:

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

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

Foguete Hazmat
fonte
@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>
Rahul Tripathi
fonte
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
fonte
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");

venkatskpi
fonte
9

Somente CSS: isso remove o link do href.

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

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

Se você quiser se livrar do ponteiro, faça isso com o css usando o cursor .

ahdaniels
fonte
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;
}
Blowsie
fonte
3

No meu caso, eu uso

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

Eu tenho um:

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

Espero que ajude você;)


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

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

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

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

Intergalactic
fonte
-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>
Darryl Windsor
fonte
-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>
Angus Walker
fonte
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>
Lixo
fonte
-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

OlaJ
fonte