Necesito mostrar una información sobre herramientas en un botón deshabilitado y eliminarlo en un botón habilitado. Actualmente, funciona a la inversa.
¿Cuál es la mejor manera de invertir este comportamiento?
$('[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>
Aquí hay una demostración
PD: quiero mantener el disabled
atributo.
javascript
jquery
html
twitter-bootstrap
twitter-bootstrap-tooltip
Lorena Bernard
fuente
fuente
Respuestas:
Aquí hay un código de trabajo: http://jsfiddle.net/mihaifm/W7XNU/200/
La idea es agregar la información sobre herramientas a un elemento principal con la
selector
opción y luego agregar / eliminar elrel
atributo al habilitar / deshabilitar el botón.fuente
Puede ajustar el botón deshabilitado y poner la información sobre herramientas en el contenedor:
Si el contenedor tiene,
display:inline
entonces, la información sobre herramientas no parece funcionar. Usandodisplay:block
ydisplay:inline-block
parece funcionar bien. También parece funcionar bien con una envoltura flotante.ACTUALIZACIÓN Aquí hay un JSFiddle actualizado que funciona con el último Bootstrap (3.3.6). Gracias a @JohnLehmann por sugerir
pointer-events: none;
el botón deshabilitado.http://jsfiddle.net/cSSUA/209/
fuente
btn-group
s?Esto se puede hacer a través de CSS. La propiedad "eventos de puntero" es lo que impide que aparezca la información sobre herramientas. Puede obtener botones deshabilitados para mostrar información sobre herramientas anulando la propiedad "eventos de puntero" establecida por bootstrap.
fuente
[disabled]
botones. Tampoco veo Bootstrap (2.3.2) asignando eventos de puntero en cualquier lugar de la fuente.Si estás desesperado (como yo) por la información sobre herramientas en casillas de verificación, cuadros de texto y similares, entonces aquí está mi solución de hackey:
Ejemplos de trabajo: http://jsfiddle.net/WB6bM/11/
Por lo que vale, creo que la información sobre herramientas en los elementos de formulario deshabilitados es muy importante para UX. Si está evitando que alguien haga algo, debe decirle por qué.
fuente
Estas soluciones son feas. He depurado el problema es que bootstrap establece automáticamente los eventos de puntero de propiedad CSS : ninguno en elementos deshabilitados.
Esta propiedad mágica hace que JS no pueda manejar ningún evento en elementos que coincidan con el selector CSS.
Si sobrescribe esta propiedad a la predeterminada, todo funciona de maravilla, ¡incluida la información sobre herramientas!
Sin embargo, no debe usar un selector tan general, porque probablemente tendrá que detener manualmente la propagación de eventos de JavaScript de la manera que lo conoce ( e.preventDefault () ).
fuente
En mi caso, ninguna de las soluciones anteriores funcionó. Descubrí que es más fácil superponer el botón deshabilitado usando un elemento absoluto como:
Manifestación
fuente
Prueba este ejemplo:
La información sobre herramientas debe inicializarse con
jQuery
: seleccione el elemento especificado y llame altooltip()
método enJavaScript
:Añadir
CSS
:Y tu html:
fuente
No puede ver la información sobre herramientas en un botón deshabilitado. Esto se debe a que los elementos deshabilitados no activan ningún evento, incluida la información sobre herramientas. Su mejor opción sería falsificar el botón que está deshabilitado (para que se vea y actúe como si estuviera deshabilitado), para que luego pueda activar la información sobre herramientas.
P.ej. Javascript:
En lugar de solo
$('[rel=tooltip]').tooltip();
HTML:
JSFiddle: http://jsfiddle.net/BA4zM/75/
fuente
Simplemente puede anular el estilo de "eventos de puntero" de Bootstrap para botones deshabilitados a través de CSS, por ejemplo
Mejor aún sea explícito y deshabilite botones específicos, por ejemplo
fuente
Esto es lo que yo y tekromancr inventamos.
Elemento de ejemplo:
nota: los atributos de información sobre herramientas se pueden agregar a un div por separado, en el que la identificación de ese div se utilizará al llamar a .tooltip ('destroy'); o .tooltip ();
esto habilita la información sobre herramientas, póngala en cualquier javascript que esté incluido en el archivo html. Sin embargo, es posible que no sea necesario agregar esta línea. (si la información sobre herramientas muestra sin esta línea, entonces no se moleste en incluirla)
destruye la información sobre herramientas, ver abajo para el uso.
evita que se pueda hacer clic en el botón. debido a que el atributo deshabilitado no se está utilizando, esto es necesario, de lo contrario, el botón aún se podría hacer clic aunque "parezca" como si estuviera deshabilitado.
Usando bootstrap, las clases btn y btn-disabled están disponibles para usted. Anule estos en su propio archivo .css. puedes agregar cualquier color o lo que quieras que se vea el botón cuando esté desactivado. Asegúrese de mantener el cursor: predeterminado; También puede cambiar el aspecto de .btn.btn-success.
agregue el siguiente código a cualquier javascript que controle el botón que se habilita
la información sobre herramientas ahora solo debe mostrarse cuando el botón está desactivado.
si está utilizando angularjs, también tengo una solución para eso, si lo desea.
fuente
destroy
información sobre herramientas. (Ver esto ) Sin embargo,$("#element_id").tooltip('disable')
y$("#element_id").tooltip('enable')
trabaja para mí.Si ayuda a alguien, pude obtener un botón deshabilitado para mostrar una información sobre herramientas simplemente colocando un espacio dentro y aplicando las cosas de información sobre herramientas allí, angularjs a su alrededor ...
fuente
Basado en Bootstrap 4
Todos los detalles aquí: Bootstrap 4 doc
fuente
Código de trabajo para Bootstrap 3.3.6
Javascript:
CSS:
fuente
Puedes imitar el efecto usando CSS3.
Simplemente quite el estado desactivado del botón y la información sobre herramientas ya no aparecerá. Esto es ideal para la validación ya que el código requiere menos lógica.
Escribí esta pluma para ilustrar.
Información sobre herramientas deshabilitada CSS3
fuente
Simplemente agregue la clase deshabilitada al botón en lugar del atributo deshabilitado para que esté visiblemente deshabilitado.
Nota: este botón solo parece estar deshabilitado, pero aún activa eventos, y solo debes tenerlo en cuenta.
fuente
pointer-events: auto;
no funciona en un<input type="text" />
.Tomé un enfoque diferente. No deshabilito el campo de entrada, pero hago que actúe como deshabilitado a través de CSS y JavaScript.
Como el campo de entrada no está deshabilitado, la información sobre herramientas se muestra correctamente. En mi caso, fue mucho más simple que agregar un contenedor en caso de que el campo de entrada estuviera deshabilitado.
fuente
Para Bootstrap 3
HTML
CSS
JS
fuente
Finalmente resolví este problema, al menos con Safari, poniendo "pointer-events: auto" antes de "disabled". El orden inverso no funcionó.
fuente