2011-02-17 21 views
7

Tengo un error extraño con el cuadro de diálogo, estoy cargando el cuadro de diálogo bien, pero cada vez que le asigno un botón, aunque mostrará el botón, ganó ' t muestra el nombre del botón. Aquí está mi código que abre el diálogo con éxito ...jQueryUI cuadro de diálogo - no aparece el texto del botón

jQuery('#'+message_div_id).dialog({ 
    modal:  ui_popup_modal 
, width:  ui_popup_width 
, height:  ui_popup_height 
, resizable: false 
, draggable: false 
, buttons: { 
        "Ok": function() { 
         jQuery(this).dialog("close"); 
        } 
       } 
}); 

Este es el código HTML resultante de Bugzilla después de la emergente ha cargado ...

< button type="button" text="Ok" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false">< span class="ui-button-text">< /span>< /button> 

El span class es el área que debe contener el texto, pero como puede ver, no lo es. ¿Algunas ideas?

+0

¿Puede proporcionarnos un jsFiddle de esto? No puedo reproducir tu problema. – Exelian

+0

¿Estás seguro de que el cuadro de diálogo es lo suficientemente alto o ancho? – DavideDM

+0

Independientemente de la configuración de ancho/alto, aún se muestra en blanco. Parece estar perdiendo el nombre del botón en el camino. – Vin

Respuesta

0

Creo que falta algo. Sería bueno verlo funcionar. Intenté crear una prueba y no recibí ningún texto, pero falta el CSS. Si hago esto, funciona:

<button type="button" text="Ok" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false"><span class="ui-button-text">Text Here</span></button> 
+0

No pude resolverlo al final, sin embargo, como esto es parte de un trabajo más grande, lo que terminé haciendo fue esto ... var button1_text = ''; (ui_popup_but1! = '')? button1_text = ui_popup_but1: button1_text = 'OK'; jQuery ('button [text = "button1"] span'). Html (button1_text); – Vin

0

Lo siento, nuevo en SO.

De todos modos, ya que esta pieza de código era sólo una parte de un pedazo más grande de la funcionalidad y ya que no podía resolver el problema a través del código de ejemplo en el sitio jQueryUI, terminé resolver con esto:

var button1_text = ''; 

(ui_popup_but1 != '') ? button1_text = ui_popup_but1 : button1_text = 'OK'; 

jQuery('button[text="button1"] span').html(button1_text); 
4

Esto me inspiró mucho, pero no funcionó exactamente para mí, hice las siguientes modificaciones. Creo que esto funciona mejor

$('div.ui-dialog-buttonset button.ui-button span.ui-button-text').each(function() { 
    $(this).html($(this).parent().attr('text')); 
}); 
0

Tuve un problema similar. Finalmente lo resolvió actualizando la versión de jQuery utilizada desde 1.3.2 hasta la actual (1.7.1) en ese momento. Me di cuenta de que la versión de jQuery UI que utilicé no es actual (1.8.11 frente a la actual de 1.8.18). Intentaré retroceder jQuery y actualizar jQuery UI a la actual y ver qué pasa.

EDIT: jQuery UI 1.8.18 me solucionó el problema al usar jQuery 1.3.2 y 1.7.1, por lo que parece que 1.8.11 tenía un defecto que causaba que no fuera compatible con 1.3.2 (Supongo que se suponía que era así. .18 es, creo que no habrían cambiado la compatibilidad entre un cambio de versión tan pequeño).

4

Esto funciona para mí con jQuery UI v1.8.22 CDN (probado):

$('div.ui-dialog button.ui-button').each(function() { 
    $(this).children('.ui-button-text').html($(this).attr('text')); 
}); 
+0

Probablemente solo una solución temporal hasta que se corrigió en la biblioteca de UI. –

0

tenían el mismo problema y terminó parches jquery-ui.js

--- jquery-ui-1.8.23.js 2012-09-14 11:18:34.000000000 +-1000 
+++ jquery-ui-1.8.23.js 2012-09-14 11:31:07.000000000 +-1000 
@@ -9088,13 +9088,16 @@ 
        .appendTo(uiButtonSet); 
       // can't use .attr(props, true) with jQuery 1.3.2. 
       $.each(props, function(key, value) { 
        if (key === "click") { 
         return; 
        } 
-     if (key in button) { 
+     if (key == "text") { 
+      button.html(value); 
+     } 
+     else if (key in button) { 
         button[ key ](value); 
        } else { 
         button.attr(key, value); 
        } 
       }); 
       if ($.fn.button) { 
0

que tenía la misma problema, pero la razón por la que estaba sin texto era que tenía problemas de dependencia. Para decirlo brevemente, tenía 2 jquery ui js incluidos en mi archivo html final. Cuando dejé solo 1 versión de jquery ui todo parece funcionar como se esperaba.

Cuestiones relacionadas