2010-10-19 7 views
7

Ho una finestra di dialogo modale JQueryUI e tutto funziona correttamente eccetto per un problema ... come si localizzano i pulsanti OK e Annulla? Ho passato con i demo e documentazione e, a meno che mi manca qualcosa molto evidente, non riesco a capire come fare questo ...Come localizzare i pulsanti sulla finestra di dialogo modale JQueryUI

Il mio codice:

$("#MyDialog").dialog({ 
. 
. 
. 
    buttons: { 
     OK: function() { 
. 
. 
. 

     }, 
     Cancel: function() { 
. 
. 
. 
     } 
    } 
}); 

Viene visualizzata una finestra con due pulsanti , "OK" e "Annulla". Come faccio a leggere i pulsanti, ad esempio "Si" e "Cancellare" ..?

Quello che devo fare, è essere in grado di INIETTARE un valore localizzato. Quindi, quello di cui ho bisogno non è l'hard-code "Si" o "Cancellare" nel codice di configurazione della finestra di dialogo, ma per essere in grado di impostare il pulsante OK per visualizzare "OK" o "Si" o qualsiasi altro valore in base alle impostazioni locali di la macchina del cliente.

Tutto il resto del dialogo funziona correttamente.

risposta

6

Basta cambiare il nome della proprietà ...

var buttons = {}; 
buttons[getLocalizedCaptionForYesButton()] = function() { }; 
buttons[getLocalizedCaptionForCancelButton()] = function() { }; 

$("#MyDialog").dialog({ 
    buttons: buttons 
}); 
+0

Grazie Ken, ma non è la risposta che cercavo! Leggendo di nuovo la mia domanda, non ero chiaro su cosa intendessi. Quello che devo fare è essere in grado di iniettare un valore localizzato. Quindi quello di cui ho bisogno non è di digitare "Si" o "Cancellare" come sopra ma essere in grado di impostare il pulsante OK per visualizzare "OK" o "Si" o qualsiasi altro valore a seconda delle impostazioni locali della macchina del cliente. – Alfamale

+0

@Alfamale È lo stesso concetto. Ho aggiornato la mia risposta per riflettere le tue esigenze. –

1

OK, trovato il modo per farlo: è necessario creare un oggetto con voi traduzioni in esso (questo oggetto può essere passato nella la funzione) e quindi creare un secondo oggetto che lega le funzioni di azione per gli elementi delle traduzioni oggetti:

var translations = {}; 
translations["ok"] = "Si"; 
translations["cancel"] = "Cancellare"; 

var buttonsOpts = {}; 
buttonsOpts[translations["ok"]] = function() { 
      . 
      . 
      . 
     }; 
buttonsOpts[translations["cancel"]] = function() { 
      . 
      . 
      . 
     }; 

$("#MyDialog").dialog({ 
    . 
    . 
    . 
    buttons: buttonsOpts 
}); 

risposta di base fornita da Alexey Ogarkov a mettere in discussione jQuery UI Dialog Buttons from variables

21

Il modo migliore per localizzare i pulsanti è utilizzare il formato array per l'opzione pulsanti.

$("#MyDialog").dialog({ 
    buttons: [ 
     { 
      text: "OK", 
      click: function() { ... } 
     }, 
     { 
      text: "Cancel", 
      click: function() { ... } 
     } 
    ] 
}); 

Questo rende naturale lavorare con etichette dinamiche. Con questo formato, è anche possibile specificare eventuali altri attributi, come ad esempio class, disabled, ecc

http://api.jqueryui.com/dialog/#option-buttons

+0

Eccellente! grazie ;) – themis