2010-11-24 16 views
6

¿Cómo puedo autoescribir un cuadro de diálogo jQuery UI en Internet   Explorer?Tamaño automático de un cuadro de diálogo de la interfaz de usuario jQuery en Internet Explorer

Este código está bien en Firefox, pero no en Internet   Explorer.

$('#dialog2').dialog({ 
    autoResize: true, 
    show: "clip", 
    hide: "clip", 
    height: 'auto', 
    width: 'auto', 
    autoOpen: false, 
    modal: true, 
    position: 'center', 
    draggable: true, 

    open: function (type, data) { 
     $(this).parent().appendTo("form"); 

    }, 
    buttons: { "close": function() { $(this).dialog("close"); document.getElementById("<%=btnnew.ClientID%>").click(); } } 
}); 

Mi elemento HTML es un DIV.

+0

¿Qué versión de jQuery y jQuery UI estás usando? –

+0

jquery ui 1.8.5 JQuery 1.4.2 – Shahin

Respuesta

0

Por favor, añadir primero una , al final de la línea siguiente

buttons: { "close": function() { $(this).dialog("close"); document.getElementById("<%=btnnew.ClientID%>").click(); } } 

IE espera que todas las opciones pueden cerrar mediante ,

Vamos a ver si eso hace el truco (que es probablemente bueno preguntar ¿Qué versión de IE está fallando?)

+0

uso IE 8 – Shahin

+0

¿hay algún resultado basado en mi recomendación anterior? –

+0

sí jQuery diálogo no funciona correctamente – Shahin

5

Estoy teniendo éxito con width: 'auto' diafragma de jQuery UI diálogo utilizando el siguiente "parche" (para IE):

(function($) { 
var fixDialogAutoWidth = $.noop; 
if ($.browser.msie) { 
    fixDialogAutoWidth = function(content) { 
     var dialog = $(content).parent('.ui-dialog'); 
     var width = dialog.innerWidth(); 
     if (width) dialog.css('width', width); 
    } 
} 

var _init = $.ui.dialog.prototype._init; 
$.ui.dialog.prototype._init = function() { 
    // IE magick: (width: 'auto' not working correctly) : 
    // http://dev.jqueryui.com/ticket/4437 
    if (this.options.width == 'auto') { 
     var open = this.options.open; 
     this.options.open = function() { 
      fixDialogAutoWidth(this); 
      if (open) open.apply(this); 
     } 
    } 
    // yet another bug options.hide: 'drop' does not work 
    // in IE http://dev.jqueryui.com/ticket/5615 
    if ($.browser.msie && this.options.hide == 'drop') { 
     this.options.hide = 'fold'; 
    } 
    return _init.apply(this); // calls open() if autoOpen 
}; 
})(jQuery); 

Sólo tiene que cargar el código después de jquery-ui.js ha cargado ...

Tenga en cuenta que de acuerdo con el billete http://dev.jqueryui.com/ticket/4437 que no deberíamos usar el ancho: 'auto', pero yo no podría vivir sin él ... :)

+0

he intentado. Añadí este código después de jQuery-ui.js pero todavía no funciona :(. IE8 – Shahin

+1

siento que no haya funcionado para ti - comenzaría registrando y comprobando el valor de 'dialog.innerWidth()' en 'fixDialogAutoWidth' ... – kares

Cuestiones relacionadas