2011-12-24 14 views
5

Aquí es código:de diálogo jQuery UI: desplazamiento vertical no funciona correctamente si la altura de diálogo más alto de la ventana

<script type="text/javascript"> 
    $(function(){ 
     var dialogOptions = { 
      title: "Header", 
      autoOpen: false, 
      modal: true, 
      width: 400, 
      height: 1000 
     }; 
     $(".wnd").dialog(dialogOptions); 
     $("#btn").click(function(){ $(".wnd").dialog("open"); }); 
    }); 
</script> 

<style> 
    .wnd {background:yellow;height:900px;width:300px;} 
</style> 

<div class="wnd"></div> 
<button id="btn">click me</button> 

al abrir el diálogo y es más alta que la ventana principal hay un control deslizante lado y no lo hace deslícese hacia abajo si intenta arrastrarlo con la ayuda del cursor del mouse (parece estar bloqueado).

Pero se desliza bien cuando se coloca el botón (flecha) en el teclado o se desplaza hacia abajo con la rueda del mouse.

Aquí está demo on jsfiddle.

¿Cómo activar ese deslizador lateral?

Gracias!

+0

El desplazamiento está deshabilitado porque el diálogo es _modal_. Puede configurar 'modal: false' para permitir el desplazamiento de nuevo. ¿Pero quieres un diálogo _modal_? – andyb

+0

@andyb, si el cuadro de diálogo es más alto que la ventana, entonces la falta de desplazamiento de la ventana principal puede restringir. Otra posibilidad sería forzar las barras de desplazamiento en el diálogo mismo, pero en algunas situaciones, desplazarse por la ventana como un todo sería una mejor experiencia. – veeTrain

Respuesta

3

Una solución limpia sería como ésta:

http://jsfiddle.net/4fc33/6/

Lo que estoy haciendo es wraping la superposición de jQuery UI crear método para apagar el caso de que evita el desplazamiento para que funcione correctamente.

+0

Fascinante; Muchas gracias por compartir esto. Estaba experimentando este problema solo en Chrome y esto desbloqueó la barra de desplazamiento sin ninguna consecuencia negativa que haya notado todavía. – veeTrain

3

Un enfoque alternativo para no poder usar los controles deslizantes de la ventana es habilitar los controles deslizantes en la ventana de diálogo. Aparecerán automáticamente si coloca un límite en la altura máxima del diálogo, pero puede ser un poco complicado con algunas versiones de jQueryUI.

Al menos en la versión de jQueryUI en la que estoy (1.9) necesitaba especificar la altura máxima por mi cuenta porque la propiedad maxHeight que debería poder usarse de acuerdo con the documentation no funcionó *.

Esto es lo que funcionó:

$("#dialog").dialog({ 
    modal: true, 
    width: "auto", 
    height: "auto" 
    /* maxHeight: whatever won't work, */ 
}).css("maxHeight", window.innerHeight-120); 

me resta 120 píxeles fuera de la altura de la ventana para dar cabida a la cabecera de la ventana de diálogo - y la sección pie de página con el botón "OK".

* La altura máxima en realidad tendría efecto si se intentara cambiar el tamaño del cuadro de diálogo, pero no en la pantalla.

+0

FYI, aunque esta es una respuesta anterior, sigue siendo la mejor en IMO. Pero, a partir de ahora (2017/18) el parámetro maxHeight está funcionando bien ahora para lograr esto en el objeto .dialog. – Eckstein

Cuestiones relacionadas