2009-08-31 20 views
22

Tengo variables que contienen las etiquetas traducidas para los botones dentro de un diálogo de jquery ui.jQuery UI Diálogo Botones de las variables

No puedo rellenar la tecla de matriz de botones con la variable en sí, y no puedo encontrar ninguna forma de dejar que trate mi variable solo como una cadena.

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

¿Hay alguna manera de hacer que esto funcione con las teclas de matriz variable?

+0

¿La ortografía de los "translatinos" es intencional, o es un error tipográfico? –

Respuesta

38

Puede probar esto, puede haber ayuda:

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

Espero que ayude!

+0

Esta manera funciona, tengo el mismo problema hace unos días, ese es el camino a seguir. –

+0

intenté esto una hora, pero con otra sintaxis ... lo intentaré de nuevo;) – Karsten

+0

bien, con su sintaxis esto funciona bien ahora;) gracias – Karsten

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

Sé que esto tiene 4 años, pero es el resultado principal de un problema que he estado teniendo. Aquí estaban los resultados de mi trabajo.

Simplemente llame a la función en un evento de mouse o teclado, haga referencia a una función (sin paréntesis), defina los botones o establezca un espacio en blanco, establezca un título y configure el texto que se mostrará.

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