2009-08-31 14 views
22

Ho variabili che contengono le etichette tradotte per i pulsanti all'interno di una finestra di dialogo ui jquery.Finestra di dialogo dell'interfaccia utente jQuery da variabili

Non riesco a riempire il tasto dell'array di pulsanti con la variabile stessa, e non riesco a trovare alcun modo per lasciare che tratti la mia variabile come una stringa.

translations['ok'] = 'ok'; 
translatinos['cancel'] = 'cancel'; 

// not working 
jQuery('#foo').dialog({ 
    buttons: 
    { 
     translations['ok']: function() { alert('foo-ok'); }, 
     translations['cancel']: function() { alert('foo-cancel'); } 
    } 
}); 

// working 
jQuery('#bar').dialog({ 
    buttons: 
    { 
     "Ok": function() { alert('bar-ok'); }, 
     "Cancel": function() { alert('bar-cancel'); } 
    } 
}); 

C'è un modo per farlo funzionare con chiavi di array variabili?

+0

L'ortografia 'translatinos' è intenzionale, o è un refuso? –

risposta

38

Si può provare questo, può essere aiuta:

var buttonsOpts = {} 
buttonsOpts[translations["ok"]] = function .... 
buttonsOpts[translations["cancel"]] = function .... 
jQuery('#bar').dialog({ 
    buttons : buttonsOpts 
}); 

Speranza che aiuta!

+0

Questo modo funziona - ho lo stesso problema qualche giorno fa - questa è la strada da percorrere. –

+0

provato questo un'ora, ma con un'altra sintassi ... ci riproverò;) – Karsten

+0

ok, con la tua sintassi funziona bene ora;) grazie – Karsten

1
jQuery('#bar').dialog({ 
    buttons : [ 
     { 
     text: translations.ok, 
     click: function(){} 
     }, 
     { 
     text: translations.cancel, 
     click: function(){} 
     }, 
    ] 
}); 
0

So che questo ha 4 anni, ma è il risultato migliore per un problema che ho avuto. Ecco i risultati del mio lavoro.

È sufficiente chiamare la funzione in un evento del mouse o della tastiera, fare riferimento a una funzione (senza parentesi), definire i pulsanti o impostare lo spazio, impostare un titolo e impostare il testo da visualizzare.

function confirmDialogue(fn, value, ok, cancel, title, text){ 
    if (typeof ok == "undefined" || ok == ""){ok = "Ok";} 
    if (typeof cancel == "undefined" || cancel == ""){cancel = "Cancel";} 
    var buttonsOpts = {}; 
    buttonsOpts[ok] = function() {fn(value);$(this).dialog("destroy");} 
    buttonsOpts[cancel] = function() {$(this).dialog("destroy");} 

    var NewDialog = $('<div id="dialogConfirm"><p>' + text + '</p></div>'); 
    NewDialog.dialog({ 
     title: title, 
     dialogClass: "dialogue", 
     modal: true, 
     height: "auto", 
     width: "auto", 
     show: true, 
     hide: true, 
     close: function(){$(this).dialog('destroy');}, 
     buttons: buttonsOpts 
    }); 
    return false; 
} 
Problemi correlati