¿Cómo se hace que un botón en Bootstrap 3 se desactive automáticamente después de hacer clic?
Para replicar mi problema, crea una página con algunos botones, dales las clases de arranque apropiadas (e incluye bootstrap):
<input id="one" type="button" class="btn btn-default" value="one">
<input id="two" type="button" class="btn btn-primary" value="two">
Cargue la página y haga clic en uno de los botones. Se deprime y se resalta hasta que hace clic en otro lugar de la página (usando FF29 y chrome35beta).
Inspeccionar el elemento de entrada mientras se hace clic y no se hace clic no muestra ninguna clase adicional adjunta y eliminada de él.
Aquí hay un ejemplo de botones de Bootstrap que permanecen presionados: http://jsfiddle.net/52VtD/5166/
fuente
<a role="button" class="btn btn-default">yada</a>
), pero permanece seleccionado si tiene un href (según el ejemplo de @ jme11). Hubiera pensado que un ancla sin href no era válido, pero la consistencia entre Chrome y Firefox lo hace atractivo, oh, y también funciona en IE11 sin un href.href
etiqueta de ancla -less es HTML 5 válido: "Si ela
elemento no tiene ningúnhref
atributo, entonces el elemento representa un marcador de posición para el lugar donde un enlace podría haberse colocado" ( especificación W3C HTML 5 ). El enfoque funcionó bien para mí, sin los posibles efectos secundarios de vincular a un fragid vacío.El botón permanece enfocado. Para eliminar esto de manera eficiente, puede agregar este código de consulta a su proyecto.
$(document).ready(function () { $(".btn").click(function(event) { // Removes focus of the button. $(this).blur(); }); });
Esto también funciona para enlaces de anclaje
$(document).ready(function () { $(".navbar-nav li a").click(function(event) { // Removes focus of the anchor link. $(this).blur(); }); });
fuente
event
declick(function())
.Mi preferencia:
<button onmousedown="event.preventDefault()" class="btn">Calculate</button>
fuente
O forma angular:
function blurElemDirective() { return { restrict: 'E', link: function (scope, element, attrs) { element.bind('click', function () { element.blur(); }); } }; } app.directive('button', blurElemDirective); app.directive('_MORE_ELEMENT_', blurElemDirective);
Reemplaza _MORE_ELEMENT_ con tus otros elementos.
O forma de atributo:
function blurElemDirective() { return { restrict: 'A', link: function (scope, element, attrs) { element.bind('click', function () { element.blur(); }); } }; } app.directive('blurMe', blurElemDirective);
Luego agregue el atributo a su elemento html: blur-me
<button blur-me></button>
fuente
element.blur() is not a function
así lo hiceevent.target.blur()
Es el foco del navegador ya que es un elemento de formulario (
input
). Puede quitar fácilmente el enfoque con un poco de CSSinput:focus { outline: 0; }
Aquí está el violín con su ejemplo: http://jsfiddle.net/52VtD/5167/
EDITAR
Ah, acabo de ver ahora que el color del botón también cambia. Bootstrap cambia el botón de, por ejemplo, su
btn-default
botón con este CSS:.btn-default:focus { color: #333; background-color: #ebebeb; border-color: #adadad; }
Si no desea este comportamiento, simplemente sobrescríbalo con su css.
fuente
Esto tiene que ver con los estados de los elementos
:active
y:focus
. Necesita modificar los estilos de esos estados para estos botones. Por ejemplo, para el botón predeterminado:.btn-default:focus, .btn-default:active, .btn-default.active, .open .dropdown-toggle.btn-default { color: #333; background-color: #ccc; border-color: #fff; }
fuente