¿Hay una manera de acceder a una página web en casa cuando se pulsa la tecla de escape en un cuadro de diálogo modal? A continuación se muestra el cuadro de diálogo modal que estoy usando:
<script>
$(function () {
$("#dialog-login-message").dialog({
modal: true,
buttons: {
Ok: function () {
document.location.href = "/";
$(this).dialog("close");
}
}
});
});
</script>
<div id="dialog-login-message" title="Login Required">
<p>
<span class="ui-icon ui-icon-circle-check" style="float:left; margin:0 7px 50px 0;"></span>
You are not logged into this website. You need to be logged into this website to use the demo.;
</p>
</div>
Si un usuario no está autenticado esto parece diálogo. Si se presiona Aceptar que los lleva a la página principal. Sin embargo, si se presiona la tecla de escape del cuadro de diálogo se pasa por la vista y continúa en estar disponible. Me gustaría enviar a la parte posterior de usuario a la página principal, pero no estoy seguro de cómo de aquí. Gracias por adelantado.
Usted simplemente puede adjuntar un evento KeyUp / KeyDown y obtener clic en el botón;
$(document).keyup(function(e) {
if (e.keyCode === 27){ // 27 is esc keycode
$(this).dialog("close");
document.location.href = "/";
}
});
PERO, este evento será atado en la página, por lo tanto, presionando esc
en cualquier momento se le redirigirá a la página principal.
Lo que se quiere hacer es añadir una var modalState
que determinará si ese diálogo está activo.
<script>
var modalState = 0; // declare it outside, 0 means unopened
$(function () {
modalState = 1; // change it to active
$("#dialog-login-message").dialog({
modal: true,
buttons: {
Ok: function () {
document.location.href = "/";
$(this).dialog("close");
}
}
});
});
$(document).keyup(function(e) {
if (e.keyCode === 27){ // 27 is esc keycode
if(modalState == 1){ // check if dialog is active
$(this).dialog("close");
document.location.href = "/";
}
}
});
</script>