function ValidateField(){
var bAllow= true;
//some checking here
if (bAllow == true && apl.val().trim() == "")
{
showDialog();
showDialog().done(function() {
return true; // wanna return true, but not success
}).fail(function() {
return false; //wanna return false, but not success
});
return false; //stop it to execute to next line
}
return bAllow; //success return }
function showDialog(){
var def = $.Deferred();
var modPop = '<div id="diaCom" title="Information?"><p>something something</p></div>';
$("#diaCom").remove();
$(modPop).appendTo('body');
$("#diaCom").dialog({
resizable: false,
draggable: false,
height:150,
width:300,
modal: true,
buttons: {
"Ok": function() {
def.resolve();
$(this).dialog("close");
},
"Cancel": function() {
def.reject();
$(this).dialog("close");
}
}
});
return def.promise();
}
//on click
if (validateField() == true){
//do something
}else{
//do something
}
ciao a tutti, qualche possibilità di restituire il valore? Desidero restituire il true e il falso tramite showDialog(). Done() e fallire per la funzione validatefield(), ma non funziona come voglio, non posso assegnarlo a bAllow poichè avevo già un return false to hold il dialogo per eseguire la sua prossima riga, qualche idea? O è corretto fare come questi?jQuery Deferred e Dialog box
Non sarà in grado di causare il Javascript per attendere il completamento dell'oggetto differito, quindi non c'è modo di 'ritorno 'più tardi. Non sono sicuro di come "aggiustarlo", ma penso che il modo sia di riorganizzare il codice/logica – Ian
No, non è possibile restituire in modo sincrono da un'attività asincrona. Invece, passa il differito! – Bergi
quindi significa che passo ad un'altra funzione, n uso l'altra funzione per fare il controllo di validazione invece della stessa funzione? Mi può mostrare un modo corretto di farlo? creare una variabile globale, impostarla su true/fase in base al defferend, quindi in un'altra funzione, utilizzare la variabile globale per fare il controllo, dopo di che utilizzare la funzione per restituire true/false?Sono ancora nuovo di deffered, basta cercare attraverso google n puzzle fuori, vieni fuori qualcosa di simile – Se0ng11