2011-07-18 15 views
13

¿Hay alguna manera de detener un evento cercano para un cuadro de diálogo de jQuery UI?Diálogo jQuery UI - detener evento cerrado

Tengo un diálogo modal con un formulario. Cuando el usuario cierra el cuadro de diálogo, me gustaría preguntar "¿Seguir sin guardar los cambios?" [Si no]. El botón [Sí] continúa y cierra el diálogo como se esperaba. El botón [No] detendrá el evento de cierre y mantendrá el diálogo abierto.

¿Esto es posible?

Respuesta

36

Sí, puede usar la opción beforeClose. Desde docs:

Este evento se desencadena cuando un cuadro de diálogo intenta cerrarse. Si el controlador de eventos beforeClose (función de devolución de llamada) devuelve falso, se impedirá el cierre.

Ejemplos de código

de Suministro una función de devolución de llamada controlen el evento BeforeClose como una opción de inicio.

$(".selector").dialog({ 
    beforeClose: function(event, ui) { ... } 
}); 
+1

Vi esto antes pero no pensé en usarlo para lo que necesitaba. ¡Realmente ayudó! Si alguien tiene curiosidad, '$ (ele) .dialog (" cerrar ")' devuelve el valor de beforeClose. Tenía una función que realizaba muchos otros trabajos después de que se cerró y también necesitaba verificar/devolver la llamada de diálogo ("cerrar"). – Marie

3

Justin respuesta funciona bien para mostrar el modal. Si desea cancelar el cierre, su función debe devolver falsa, al igual que:

$(".selector").dialog({ 
    beforeClose: function(event, ui) 
    { return check_if_unsaved_changes(..); } 
}); 

check_if_unsaved_changes deben devolver verdadero si el diálogo debe cerrar y falso si no debería cerrarse.

Cuestiones relacionadas