jquery - recargar - Interceptar clic en el evento en un botón, solicitar confirmación y luego continuar
provocar un evento click jquery (4)
Basándome en la variable SomeCondition
, necesito interceptar un evento de clic en un botón y pedir confirmación, si dicen que está bien, continúe; de lo contrario, haga clic en ignorar.
Así que algo como:
if(SomeCondition) {
// disable click on button
var isOk = window.confirm("Are you sure?");
if(isOk) {
$("#button1").click();
}
}
Nota: button1 ya se ha conectado con un evento de clic a través de javascript desde un archivo .js externo que no puedo cambiar.
No sé qué evento de clic estaba vinculado también, por lo que tengo que deshabilitar el clic si SomeCondition es verdadero, luego pedir confirmación y luego continuar con el clic.
Con jQuery para evitar el valor predeterminado, simplemente return false
:
$("#button1").click(function () {
//do your thing
return false;
});
El proceso esOK su ventana. Confirme dentro de la función del botón
$(''#button1'').click(function(){
if(window.confirm("Are you sure?"))
alert(''Your action here'');
});
El problema que va a tener es que el clic ya sucedió cuando activó su llamada "¿Está seguro?". PreventDefault no detiene la ejecución del clic original, si es el que lanzó su ventana original. Confirmar.
Poco de un problema de huevo / gallina.
Editar: después de leer tu pregunta editada:
var myClick = null;
//get a list of jQuery handlers bound to the click event
var jQueryHandlers = $(''#button1'').data(''events'').click;
//grab the first jquery function bound to this event
$.each(jQueryHandlers,function(i,f) {
myClick = f.handler;
return false;
});
//unbind the original
$(''#button1'').unbind(''click'');
//bind the modified one
$(''#button1'').click(function(){
if(window.confirm("Are You Sure?")){
myClick();
} else {
return false;
}
});
No pude obtener ninguna de las respuestas anteriores para trabajar con jquery 1.9.1
Esto es lo que funcionó para un evento de click
establecido previamente.
var elem = $(''#button1'');
var oldClick = $._data(elem[0], ''events'').click[0].handler;
elem.off(''click'');
// Pass the original event object.
elem.click(function(e){
if(window.confirm("Are You Sure?")){
oldClick(e);
} else {
return false;
}
});
muy similar a la respuesta de Jason Benson arriba
Para cualquier persona que esté buscando una solución simple (que no sea específica a la condición especial mencionada aquí)
Solo agrega este atributo al botón:
.... , onclick = "return confirm(''are you sure?'')"
Cuando el cuadro de confirmación devuelve un falso, el evento de clic se cancela. Nota: el controlador onclick mencionado explícitamente en línea anulará cualquier otro enlace.