2009-10-06 21 views
11

Come posso impostare dinamicamente il testo della finestra di dialogo che sto aprendo? Ho provato alcune cose diverse ma tutte rispondono con una finestra di dialogo vuota.Creare dinamicamente testo nella finestra di dialogo

Ecco il mio tentativo attuale:

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

Wow. Concatenazione di stringhe. Questo è un duro ... –

+3

ha, troppo php prima che scrivessi; grazie per il sarcasmo, però, è stato utile! – acedanger

risposta

25

Per le migliori pratiche, prova a mettere un div all'interno della vostra finestra div e aggiungendo testo che, invece.

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

e poi impostando il testo del Div interno. Questo per una migliore separazione, quindi hai

  • un div per dialog manipulatio n
  • e un div per la visualizzazione del testo

È possibile quindi impostare il testo con

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

ha funzionato perfettamente. grazie per l'aiuto! – acedanger

+1

siete i benvenuti :) – Evildonald

+0

Tuttavia, non funziona con titoli dinamici. –

4

utilizzare il simbolo più per concatenare le stringhe:

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

dialog("open"); non è un metodo di jQuery UI valido. (E quello che Mike ha detto circa la concatenazione con + invece di .

Check the documentation.

+0

dal docs $ (foo) .dialog ('open') - http://jqueryui.com/demos/dialog/ – acedanger

9

Ecco un modo alternativo di creare finestre di dialogo al volo e impostando i loro messaggi in modo dinamico:

$('<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 

vederlo in azione: http://jsfiddle.net/DYbwb/

+2

Il div dovrebbe essere distrutto alla chiusura, non dovrebbe? Inoltre non mi piace impostare il testo sull'evento aperto. Potresti creare un elemento, chiamare la finestra di dialogo e distruggerlo alla chiusura: http://jsfiddle.net/06nLLtbb/1/ – jelhan

+2

è circa un anno dopo aver postato questo e sono molto felice che tu l'abbia fatto. – arcadeRob

1

Ecco un esempio che mostra il testo dinamico in una finestra di dialogo jQueryui. Il testo proviene da una risposta ajax. Il messaggio è mostrato sotto (più grande di quanto appare!). 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) {} 
      } 
     }); 
}); 
Problemi correlati