2011-11-15 11 views
6

Questo è il mio codice document.ready:passare un valore in un jQuery UI finestra di dialogo con una funzione

$(document).ready(function() { 
    $("#dialogbox").dialog({ 
     open: function(event, ui) {$("a.ui-dialog-titlebar-close").remove();}, 
     bgiframe: true,autoOpen: false,closeOnEscape: false,draggable: false, 
     show: "drop",hide: "drop",zIndex: 10000,modal: true, 
     buttons: {'Ok': function() {$(this).dialog("close");processEmp();}} 
    }); 
}); 

Ho il seguente codice javascript che accetta un parametro:

function test(pEmp) 
{ 
    var a = pEmp.value); 

    $('#dialogbox').dialog('open'); 
} 

La mia domanda è, in base al valore che ho passato nella mia funzione test, che a sua volta chiama la mia finestra di dialogo dell'interfaccia utente jQuery ('#dialogbox'), quando l'utente preme il pulsante 'Ok' nella finestra di dialogo, ho bisogno in qualche modo (che è cosa Non sono sicuro di come fare), passare la variabile "a" che contiene il mio valore pEmp.value, nella mia altra funzione processEmp (a?), Che Ho allegato il mio pulsante 'Ok'.

Sperare che qualcuno possa essere d'aiuto in quanto ho bisogno di questo valore quando l'utente riconosce la finestra di dialogo.

Grazie.

risposta

6

Si può passare opzione personalizzata di dialogo prima di aprirla:

$(function() { 
    $("#dialog").dialog({ 
      open: function (event, ui) { $("a.ui-dialog-titlebar-close").remove(); }, 
      bgiframe: true, 
      autoOpen: false, 
      closeOnEscape: false, 
      draggable: false, 
      show: "drop", 
      hide: "drop", 
      zIndex: 10000, 
      modal: true, 
      buttons: { 'Ok': function() { 
       $(this).dialog("close"); 
       processEmp($(this).data("pEmpValue")); 
      } 
      } 
    }); 
}); 

function processEmp(a) { 
    alert(a); 
} 

function test(pEmp) { 
    $("#dialog").data("pEmpValue", pEmp.value).dialog("open"); 
} 

O anche la soluzione più semplice è quella di dichiarare a variabile nel campo di applicazione della finestra:

var a = null; 

$(function() { 
    $("#dialog").dialog({ 
      open: function (event, ui) { $("a.ui-dialog-titlebar-close").remove(); }, 
      bgiframe: true, 
      autoOpen: false, 
      closeOnEscape: false, 
      draggable: false, 
      show: "drop", 
      hide: "drop", 
      zIndex: 10000, 
      modal: true, 
      buttons: { 'Ok': function() { 
       $(this).dialog("close"); 
       processEmp(a); 
      } 
      } 
    }); 
}); 

function processEmp(a) { 
    alert(a); 
} 

function test(pEmp) { 
    a = pEmp.value; 
    $("#dialog").dialog("open"); 
} 
+1

Sembra un comportamento non supportato e sarei riluttante a fare affidamento su di esso. I documenti dicono che il metodo di opzione è per passare una 'opzione di dialogo' che io prendo per indicare una delle opzioni definite. – BNL

+0

@BNL, hai un punto. In questa domanda suggerisco di usare il metodo .data() invece dell'opzione personalizzata: http://forum.jquery.com/topic/using-custom-options-in-jquery-ui-dialog –

4

È possibile ottenere ciò aggiungendo un gestore di eventi per "chiudi". Qualcosa di simile a questo:

$("#dialogbox").bind("dialogclose", function(event, ui) { processEmp(a); }); 
+0

Può anche essere specificato nelle opzioni originali con 'chiudi '(proprio come l'OP vincolato' apri'). – BNL

+0

Apprezzo il tuo aiuto @Dmitry ma non sono sicuro di come lo collego con il mio codice sopra. Continuo a mantenere il mio pulsante 'Ok' nella mia finestra di dialogo? – tonyf

+0

Sì, dovresti mantenere il gestore "Ok" per chiudere la finestra di dialogo. Quando la finestra di dialogo chiusa chiudeva l'evento "dialogclose". –

Problemi correlati