2009-10-06 18 views
11

¿Cómo puedo configurar dinámicamente el texto del cuadro de diálogo que estoy abriendo? He intentado algunas cosas diferentes, pero todas responden con un cuadro de diálogo vacío.Crear texto dinámicamente en el cuadro de diálogo

Aquí está mi intento actual:

 
$('#dialog').text('Click on the link to download the file:
'.data); $('#dialog').dialog("open");
+0

Wow. Concatenación de cadenas Esa es una pregunta difícil ... –

+3

ha, demasiado php antes de escribir eso; gracias por el sarcasmo, ¡fue útil! – acedanger

Respuesta

25

Para la mejor práctica, trate de poner un div dentro de su div de diálogo y añadiendo texto para que en su lugar.

<div id="myDialog"><div id="myDialogText"></div></div> 

y luego estableciendo el texto de la división interna. Esto permite una mejor separación, por lo que tiene

  • a div para manipular el diálogo n
  • y un div para la visualización de texto

entonces se puede establecer el texto con

jQuery("#myDialogText").text("your text here"); 
+0

funcionó a la perfección. ¡gracias por la ayuda! – acedanger

+1

eres bienvenido :) – Evildonald

+0

No funciona para títulos dinámicos, sin embargo. –

4

Utilice el signo más para concatenar cadenas:

$('#dialog').text('Click on the link to download the file: 
' + data); 
$('#dialog').dialog("open"); 
0

dialog("open"); no es un método jQuery UI válida. (Y lo que dijo Mike sobre la concatenación con + en lugar de .

Check the documentation.

+0

desde el documento $ (foo) .dialog ('abierto') - http://jqueryui.com/demos/dialog/ – acedanger

9

Aquí es una forma alternativa de crear diálogos sobre la marcha y la fijación de sus mensajes de forma dinámica:

$('<div></div>').dialog({ 
    modal: true, 
    title: "Confirmation", 
    open: function() { 
     var markup = 'Hello World'; 
     $(this).html(markup); 
    }, 
    buttons: { 
     Ok: function() { 
     $(this).dialog("close"); 
     } 
    } }); //end confirm dialog 

verlo en acción: http://jsfiddle.net/DYbwb/

+2

El div debe ser destruido de cerca, ¿no es así? Además, no me gusta establecer texto en evento abierto. Podrías crear un elemento, llamar al cuadro de diálogo y destruirlo de cerca: http://jsfiddle.net/06nLLtbb/1/ – jelhan

+2

es aproximadamente un año después de que publicaste esto y estoy muy feliz de que lo hayas hecho. – arcadeRob

1

Aquí hay un ejemplo que muestra texto dinámico en un cuadro de diálogo jQueryui. El texto es de una respuesta ajax. El mensaje se muestra a continuación (¡más grande de lo que parece!). enter image description here

$(".info").click(function(event){ 
    event.preventDefault(); 
    $id = $(this).attr("id"); 
    $.ajax({ 
      type: "POST", 
      url: 'my_code.php', 
      data: {query:"info", rowid: $id}, 
      success: function(data) { 
       try { 
        obj = JSON.parse(data); 
        var str = ''; 
        for (var i in obj) { 
         str += i + ":" + obj[i] + "<br />"; 
         if (i == "id") str += "<hr />"; 
        } 
        $("#dialog-1").html(str).dialog(); 
        $("#dialog-1").dialog('open'); 
       } catch (e) {} 
      } 
     }); 
}); 
Cuestiones relacionadas