Preciso exibir uma dica de ferramenta em um botão desativado e removê-lo em um botão ativado. Atualmente, ele funciona ao contrário.
Qual é a melhor maneira de inverter esse comportamento?
$('[rel=tooltip]').tooltip();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<hr>
<button class="btn" disabled rel="tooltip" data-title="Dieser Link führt zu Google">button disabled</button>
<button class="btn" rel="tooltip" data-title="Dieser Link führt zu Google">button not disabled</button>
Aqui está uma demonstração
PS: Eu quero manter o disabled
atributo.
javascript
jquery
html
twitter-bootstrap
twitter-bootstrap-tooltip
Lorraine Bernard
fonte
fonte
Respostas:
Aqui está um código de trabalho: http://jsfiddle.net/mihaifm/W7XNU/200/
A ideia é adicionar a dica de ferramenta a um elemento pai com a
selector
opção e, em seguida, adicionar / remover orel
atributo ao ativar / desativar o botão.fonte
Você pode quebrar o botão desativado e colocar a dica de ferramenta no wrapper:
Se o wrapper tiver
display:inline
, a dica de ferramenta não parece funcionar. Usandodisplay:block
edisplay:inline-block
parece funcionar bem. Também parece funcionar bem com um invólucro flutuante.ATUALIZAÇÃO Aqui está um JSFiddle atualizado que funciona com o Bootstrap mais recente (3.3.6). Obrigado a @JohnLehmann por sugerir
pointer-events: none;
o botão desativado.http://jsfiddle.net/cSSUA/209/
fonte
btn-group
s?Isso pode ser feito via CSS. A propriedade "pointer-events" é o que está impedindo a exibição da dica. Você pode ativar os botões desabilitados para exibir a dica de ferramenta substituindo a propriedade "pointer-events" definida pela inicialização.
fonte
[disabled]
botões. Também não veja o Bootstrap (2.3.2) atribuindo eventos de ponteiro em qualquer lugar na fonte.Se você está desesperado (como eu estava) por dicas de ferramentas em caixas de seleção, caixas de texto e coisas do gênero, aqui está minha solução para o hackey:
Exemplos de trabalho: http://jsfiddle.net/WB6bM/11/
Pelo que vale, acredito que dicas de ferramentas sobre elementos de formulário desativados são muito importantes para o UX. Se você está impedindo alguém de fazer alguma coisa, deve dizer o motivo.
fonte
Essas soluções alternativas são feias. Eu depurei o problema é que o bootstrap define automaticamente a propriedade CSS pointer-events: none nos elementos desativados.
Essa propriedade mágica faz com que o JS não consiga manipular nenhum evento em elementos que correspondam ao seletor CSS.
Se você substituir essa propriedade como padrão, tudo funcionará como um encanto, incluindo dicas de ferramentas!
No entanto, você não deve usar um seletor tão geral, porque provavelmente terá que parar manualmente a propagação de eventos JavaScript da maneira que conhece ( e.preventDefault () ).
fonte
No meu caso, nenhuma das soluções acima funcionou. Descobri que é mais fácil sobrepor o botão desativado usando um elemento absoluto como:
Demo
fonte
Tente este exemplo:
As dicas de ferramentas devem ser inicializadas com
jQuery
: selecione o elemento especificado e chame otooltip()
método emJavaScript
:Adicionar
CSS
:E seu html:
fonte
Você não pode exibir a dica de ferramenta em um botão desativado. Isso ocorre porque os elementos desativados não acionam nenhum evento, incluindo a dica de ferramenta. Sua melhor aposta seria falsificar o botão que está sendo desativado (para que pareça e atue como desativado), para que você possa acionar a dica de ferramenta.
Por exemplo. Javascript:
Em vez de apenas
$('[rel=tooltip]').tooltip();
HTML:
JSFiddle: http://jsfiddle.net/BA4zM/75/
fonte
Você pode simplesmente substituir o estilo "pointer-events" do Bootstrap para botões desativados via CSS, por exemplo
Melhor ainda ser explícito e desativar botões específicos, por exemplo
fonte
Foi isso que eu e o tekromancr inventamos.
Elemento de exemplo:
nota: os atributos da dica de ferramenta podem ser adicionados a uma div separada, na qual o ID dessa div deve ser usado ao chamar .tooltip ('destroy'); ou .tooltip ();
isso habilita a dica de ferramenta, coloque-a em qualquer javascript incluído no arquivo html. essa linha pode não ser necessária para adicionar, no entanto. (se a dica de ferramenta mostrar sem esta linha, não se preocupe em incluí-la)
destrói a dica de ferramenta, veja abaixo o uso.
impede que o botão seja clicável. porque o atributo desativado não está sendo usado, isso é necessário; caso contrário, o botão ainda poderá ser clicado, mesmo que "pareça" como se estivesse desativado.
Usando o bootstrap, as classes btn e btn-disabled estão disponíveis para você. Substitua-os em seu próprio arquivo .css. você pode adicionar qualquer cor ou o que você deseja que o botão fique quando desativado. Certifique-se de manter o cursor: padrão; você também pode alterar a aparência do .btn.btn-success.
adicione o código abaixo a qualquer javascript que esteja controlando o botão que está sendo ativado.
agora, a dica de ferramenta deve aparecer apenas quando o botão estiver desativado.
se você estiver usando angularjs, também tenho uma solução para isso, se desejado.
fonte
destroy
a dica de ferramenta. (Veja isso ) No entanto,$("#element_id").tooltip('disable')
e$("#element_id").tooltip('enable')
trabalhe para mim.Se isso ajuda alguém, consegui um botão desabilitado para mostrar uma dica de ferramenta, basta colocar um espaço dentro dela e aplicar o material da dica de ferramenta lá, angularjs em volta ...
fonte
Baseado no Bootstrap 4
Todos os detalhes aqui: Bootstrap 4 doc
fonte
Código de trabalho para o Bootstrap 3.3.6
Javascript:
CSS:
fonte
Você pode imitar o efeito usando CSS3.
Simplesmente desative o estado desativado e a dica não aparecerá mais. Isso é ótimo para validação, pois o código requer menos lógica.
Eu escrevi esta caneta para ilustrar.
Dicas de ferramenta desativadas do CSS3
fonte
Basta adicionar a classe desabilitada ao botão em vez do atributo desabilitado para torná-la visivelmente desabilitada.
Nota: esse botão parece estar desativado, mas ainda aciona eventos, e você só precisa estar atento a isso.
fonte
pointer-events: auto;
não funciona em um<input type="text" />
.Eu tomei uma abordagem diferente. Eu não desative o campo de entrada, mas faça-o funcionar como desabilitado via css e javascript.
Como o campo de entrada não está desativado, a dica de ferramenta é exibida corretamente. No meu caso, era mais simples do que adicionar um wrapper, caso o campo de entrada estivesse desabilitado.
fonte
Para o Bootstrap 3
HTML
CSS
JS
fonte
Finalmente resolvi esse problema, pelo menos com o Safari, colocando "eventos-ponteiro: auto" antes de "desativado". A ordem inversa não funcionou.
fonte