2012-05-12 6 views
5

Estoy devolviendo datos a través de ajax para completar un diálogo de jquery. El ajax es básicamente una tabla html con una cantidad variable de filas.Altura del cuadro de diálogo de Jquery y barra de desplazamiento vertical

Me gustaría que el cuadro de diálogo se expanda para mostrar las filas, hasta cierto tamaño vertical (350px), en cuyo punto debe mostrar una barra de desplazamiento vertical.

Por lo tanto, esto parece funcionar bien - el diálogo cambia de tamaño correctamente dependiendo del número de filas. Pero, nunca tengo la barra de desplazamiento vertical, así que si tengo 20 filas, solo puedo ver las últimas 9.

¿Cómo fuerzo la barra de desplazamiento vertical si la altura hubiera sido mayor a 350px?

$.ajax({ 
    type: 'POST', 
    url: 'myurl', 
    data: postdata, 
    dataType: 'json', 
    success: function (result) { 
     if (result.success && result.data) { 
      var $dialog = $('<div></div>').html(result.data).dialog({ 
       autoOpen: false, 
       title: 'History', 
       modal: true, 
       height: Math.min((result.rows * 25) + 150, 350), 
       width: 800 
      }); 
      $dialog.dialog('open'); 

     } 
     event.preventDefault(); 
    } 
}); 

Respuesta

22

Debe añadir propiedad CSS para overflow:auto div contenido.

$("<div></div>").css({height:"350px", overflow:"auto"}); 

Si sólo necesita desplazamiento vertical overflow-y:auto y overflow-x:hidden

+0

OK, eso funciona, pero ¿por qué la barra de desplazamiento se desplaza hacia abajo hasta el final del contenido del diálogo, y no en la parte superior? – JonoB

+0

El desplazamiento funciona en dos direcciones. (Tal vez tenga algunas incompatibilidades css con controles de navegador o jquery). Mire la demostración, por favor http://jsfiddle.net/xYyyd/ –

+0

Esa demostración no parece completa – JonoB

4

utilizar CSS max-height: 350px; y desbordamiento: automático; .. debería estar bien

0

No quería dar una altura de px fija, así que encontré una solución que le daba al modelo las siguientes reglas de CSS.

.modal { 
    display: inline-block !important; 
    max-height: 90%; 
    overflow: auto;/* Or scroll, depending on your needs*/} 

Espero que te sirva.

Cuestiones relacionadas