2009-08-31 9 views
22

Ich habe Variablen, die die übersetzten Beschriftungen für Schaltflächen in einem jquery ui-Dialogfeld enthalten.jQuery UI Dialogschaltflächen von Variablen

Ich kann den Button-Array-Schlüssel nicht mit der Variablen selbst füllen, und finde keine Möglichkeit, meine Variable als String behandeln zu lassen.

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'); } 
    } 
}); 

Gibt es eine Möglichkeit, dies mit variablen Array-Schlüssel zu arbeiten?

+0

Ist die 'translatinos' Schreibweise beabsichtigt, oder ist es ein Tippfehler? –

Antwort

38

du versuchen können, kann es hilft:

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

Hoffe, es hilft!

+0

Diese Methode funktioniert - ich habe vor ein paar Tagen dasselbe Problem - das ist der richtige Weg. –

+0

versuchte dies eine Stunde, aber mit einer anderen Syntax ... Ich werde es noch einmal versuchen;) – Karsten

+0

ok, mit Ihrer Syntax funktioniert das jetzt gut;) danke – Karsten

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

Ich weiß, das ist 4 Jahre alt, aber es ist das beste Ergebnis für ein Problem, das ich habe. Hier waren die Ergebnisse meiner Arbeit.

Einfach die Funktion in einem Maus- oder Tastaturereignis aufrufen, auf eine Funktion verweisen (ohne Klammern), die Schaltflächen definieren oder leer setzen, einen Titel festlegen und den anzuzeigenden Text festlegen.

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; 
}