2010-10-25 16 views
8

In base al codice seguente per mostrare una finestra di dialogo JQuery, il testo del pulsante si presenta come letterale "b" in contrasto con il valore della variabile b.jQuery pulsante di dialogo pulsante testo

Vale a dire: showWarningDialog('myBody', 'myTitle', 'go') mostra una finestra di dialogo con un pulsante con etichetta b anziché go.

Come è possibile visualizzare go?

function showWarningDialog(theBody, theTitle, buttonText) { 
    var t = "Warning"; 
    if (theTitle != null) { 
     t = theTitle; 
    } 

    var b = "Ok"; 
    if (buttonText != null) { 
     b = buttonText; 
    } 

    $("#div-dialog-warning div").text(theBody); 

    $("#div-dialog-warning").dialog({ 
     title: t, 
     resizable: false, 
     height: 160, 
     modal: true, 
     buttons: { 
      b : function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 
} 

risposta

13

As per the jQuery UI docs, il nome del pulsante viene dal tasto del pulsante nell'oggetto buttons. In tal caso, sostituire questo bit:

$("#div-dialog-warning").dialog({ 
    title: t, 
    resizable: false, 
    height: 160, 
    modal: true, 
    buttons: { 
     b : function() { 
      $(this).dialog("close"); 
     } 
    } 
}); 

con questo:

var buttonOpts = {}; 
buttonOpts[b] = function() { 
    $(this).dialog("close"); 
}; 
$("#div-dialog-warning").dialog({ 
    title: t, 
    resizable: false, 
    height: 160, 
    modal: true, 
    buttons: buttonOpts 
}); 

Si deve trattare b come una variabile, quindi utilizzando buttonOpts[b] piuttosto che quello che hai fatto, che è l'equivalente di utilizzando buttonOpts.b.

0

{b: 'blah'} wil significa che prende b come nome di variabile. definire la matrice manualmente può risolverlo anche se non posso immaginare non c'è una sintassi speciale per i pulsanti var = {}; Pulsanti [b] = function() {}; $(). Dialog ({buttons: buttons});

0

Penso che manchi il parametro nell'array congig. Non ci dovrebbe essere qualcosa di simile a

buttons: { 
     b : function() { 
      $(this).dialog("close"); 
     }, 
     buttonText: b 
} 
+0

Non c'è un'opzione 'buttonText'. Secondo i documenti, 'La chiave di proprietà è il testo del pulsante'. –

2

ecco cosa è necessario aggiungere afte Ryou inizializzare la finestra di dialogo:

$('div.ui-dialog-buttonpane button:contains(b)').empty().html(b); 

probabilmente si vorrà per rinominare b per essere qualcosa di un po 'più descrittivo e unico però.

Problemi correlati