quiero desactivar un botón por un tiempo específico. ¿Cómo puedo hacer eso?jquery desactivar un botón por un tiempo específico
Respuesta
Desactive el botón y luego use setTimeout para ejecutar una función que habilita el botón luego de unos segundos.
$('#some-button').attr("disabled", "disabled");
setTimeout('enableButton()', 5000);
function enableButton(){
$('#some-button').removeAttr('disabled');
}
Dado que es probable que esto sea una tarea que le gustaría repetir, creo que la mejor manera de hacer esto sería extender jQuery así:
$.fn.timedDisable = function(time) {
if (time == null) { time = 5000; }
return $(this).each(function() {
$(this).attr('disabled', 'disabled');
var disabledElem = $(this);
setTimeout(function() {
disabledElem.removeAttr('disabled');
}, time);
});
};
Esto le permitirá llamar una función en un conjunto de elementos coincidentes que los desactivará temporalmente. Tal como está escrito, puede simplemente llamar a la función, y los elementos seleccionados se desactivarán durante 5 segundos. Se podría hacer eso, así:
$('#some-button').timedDisable();
Puede ajustar la configuración de tiempo predeterminado cambiando el 5000
en la siguiente línea:
if (time == null) { time = 5000; }
se puede pasar opcionalmente en un valor de tiempo en milisegundos para controlar cómo Cuánto tiempo se deshabilitarán los elementos. Por ejemplo:
$('#some-button').timedDisable(1000);
He aquí una demostración de trabajo: http://jsfiddle.net/fG2ES/
podría no ser la solución más elegante, pero pensé que jugaría con colas de jQuery en este ...
$.fn.disableFor = function (time) {
var el = this, qname = 'disqueue';
el.queue(qname, function() {
el.attr('disabled', 'disabled');
setTimeout(function() {
el.dequeue(qname);
}, time || 3000);
})
.queue(qname, function() {
el.removeAttr('disabled');
})
.dequeue(qname);
};
$('#btn').click(function() {
$(this).disableFor(2000);
});
Aquí es donde trabajé hacia fuera ... http://jsfiddle.net/T9QJM/
Y, como referencia, How do I chain or queue custom functions using JQuery?
Pruebe esto.
(function(){
$('button').on('click',function(){
var $this=$(this);
$this
.attr('disabled','disabled');
setTimeout(function() {
$this.removeAttr('disabled');
}, 3000);
});
})();
se puede encontrar un ejemplo de trabajo aquí http://jsfiddle.net/informativejavascript/AMqb5/
- 1. botón Jquery Asp.net desactivar
- 2. cómo deshabilitar/habilitar un botón por jquery
- 3. ¿Desactivar un botón en IE6, IE7, IE8?
- 4. desactivar un método jQuery .toggle()
- 5. jQuery para desactivar el botón no funciona
- 6. ¿Cómo puedo desactivar un botón en Xcode?
- 7. ¿Cómo puedo desactivar un botón en un cuadro de diálogo de la interfaz de usuario jQuery?
- 8. Desactivar antialiasing para un contexto de dispositivo GDI específico
- 9. jQuery Eliminar texto específico de un elemento
- 10. Desactivar botón de cierre de jQuery UI de diálogo
- 11. jQuery descargar un archivo zip desde un botón?
- 12. ¿Cómo activar/desactivar el botón de zoom (botón verde +)?
- 13. jQuery analizando XML: obtener un elemento con un atributo específico
- 14. clic en un botón específico utilizando capibara en los carriles
- 15. MSSQL: Desactivar desencadena por un INSERT
- 16. Cómo encontrar el botón de enviar en un formulario específico en jQuery
- 17. Desactivar el botón de menú?
- 18. Cómo desactivar el teclado de iPhone para un campo de entrada específico en la página web
- 19. JQuery UI Slider por tiempo
- 20. Mostrar y ocultar divs en un intervalo de tiempo específico usando jQuery
- 21. ¿Por qué jQuery "alternar" botón desencadenar el botón Enviar en un formulario?
- 22. Desactivar Habilitar la validación discreta para el botón de envío específico
- 23. seleccionar un botón de opción con jquery
- 24. ¿Cómo puedo resaltar un botón con jQuery?
- 25. Agregar un botón Actualizar a jQuery Datatable
- 26. jQuery, enviar formulario con un botón
- 27. Hacer un botón para huir en jQuery
- 28. QTimer start tiempo específico
- 29. Actualizar página en un tiempo específico en ASP.NET
- 30. desactivar onclick jQuery evento
Esto no funciona: http://jsfiddle.net/RPQmM/ Creo que el setTimeout se llama mal. – Ender
@Ender No funciona porque su función 'enableButton' no está en el alcance global requerido por el * camino *' setTimeout' se está llamando. Vea esto: http://jsfiddle.net/RPQmM/1/ –