2011-08-10 11 views
5

Ho un sacco di processi di convalida javascript con conferma. Voglio usare la finestra di dialogo ui jquery, ma ho bisogno di restituire true per il resto dei processi di validazione.Finestra di dialogo dell'interfaccia utente Jquery al posto di javascript confermare

Ad esempio:

var where_to_coupon = confirm(pm_info_msg_013); 
     if (where_to_coupon== true) { 
     doSubmit=true; 
     return doSubmit; 

quindi ho bisogno di una funzione per sostituire confermare con una finestra di interfaccia utente, tirare la corda messaggio (pm_info_msg_013), e usare il mio tasti o pulsanti dell'interfaccia utente proprio per restituire vero per il processo di convalida .

Non so da dove iniziare.

aiuto?

risposta

9

Nella finestra di dialogo dell'interfaccia utente jQuery, impostare l'opzione modal su true e specificare le azioni utente primaria e secondaria con l'opzione buttons.

$("#dialog-confirm").dialog({ 
     resizable: false, 
     height:140, 
     modal: true, 
     buttons: [{ 
      text: pm_info_msg_013, 
      click : function() {  
       $(this).dialog("close"); 
       // code related to "where_to_coupon== true" goes here 
       // submit form 
       } 
      }, { 
      text: "Cancel", 
      click: function() { 
       $(this).dialog("close"); 
       doSubmit = false; 
       // don't submit form 
      }}] 
    }); 

vedere la demo qui: http://jqueryui.com/demos/dialog/#modal-confirmation

Aggiornamento: Questo vi permetterà di creare più conferma. Utilizzo:

function CreateDialog(okText, cancelText, okCallback, cancelCallback) { 
     $("#dialog-confirm").dialog({ 
      resizable: false, 
      height:140, 
      modal: true, 
      buttons: [{ 
       text: okText, 
       click : function() {  
        $(this).dialog("close"); 
        okCallback(); 
        } 
       }, { 
       text: cancelText, 
       click: function() { 
        $(this).dialog("close"); 
        cancelCallback(); 
       }}] 
      } 
     }); 

// ******* usage #1 ********  
CreateDialog(pm_info_msg_013, "Cancel", function() { 
    // where_to_coupon== true 
}, function() { 

    // where_to_coupon== false 
}); 

function OnConfirmTrue() { 
    // do something 
} 

function OnConfirmFalse() { 
    // do something 
} 

// ******* usage #2 ******** 

CreateDialog(pm_info_msg_013, "Cancel", OnConfirmTrue, OnConfirmFalse); 
+0

non so come incorporare con la mia stringa di conferma javascript – Jason

+0

Dovresti modificare dinamicamente l'html del 'dialog-confirm' div (' $ ("# dialog-confirm"). html (pm_info_msg_013) ') prima di chiamare il codice sopra –

+0

Vedere il mio codice aggiornato. – Mrchief

1

Ho creato un plugin per l'interfaccia utente di jQuery, chiamato dialogWrapper, che fornisce diversi metodi, incluso un metodo di conferma. Si chiama così:

$.confirm("Prompt", function(){}, function(){}, {}); 

Il secondo e il terzo argomento sono cosa fare quando il sì e nessun pulsante si fa clic, rispettivamente. Il quarto è per argomenti aggiuntivi.

verificarlo qui: http://code.google.com/p/dialogwrapper/

non funziona come il metodo nativo JavaScript confirm, però, dal momento che è asincrona. Quindi non potresti sovrascrivere direttamente confirm con $.confirm.

+0

sembra interessante, ma sto provando a toccare il codice minimo (specialmente in javascript) - quindi come potrei restituire vero o falso all'interno del tuo plugin? – Jason

+0

Non è possibile, poiché '$ .confirm' funziona in modo asincrono. Si basa interamente su callback. Non c'è modo di usare jQuery Dialogs in modo sincrono senza brutto codice di blocco dell'interfaccia utente (ad esempio, un ciclo 'while' che controlla se un pulsante è stato ancora premuto). –

+0

beh, presumo ci debba essere un modo (una seconda funzione) o un evento onclick per attivare un vero? – Jason

0

Hai provato Impromtu da Trent Richardson?

http://trentrichardson.com/Impromptu/

Questo plug-in jQuery può dare il controllo che si sta cercando con prompt e conferma e altro ancora.

+0

Per favore, prova a leggere questo http://stackoverflow.com/help/deleted-answers, per capire meglio come ** non ** rispondere. Vale a dire: "Risposte che non rispondono fondamentalmente alla domanda": ** a malapena più di un link a un sito esterno ** –

Problemi correlati