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
}
Hallo allerseits, jede Chance, den Wert zurückzugeben? Ich möchte das Wahr und Falsch durch showDialog(). Done() zurückgeben und für validateField() fehlschlagen, aber es funktioniert nicht so, wie ich es will, ich kann bAllow nicht zuweisen, da ich bereits eine Rückgabe false zum Halten hatte der Dialog, um seine nächste Zeile auszuführen, irgendeine Idee? Oder ist es richtig, so zu machen?jQuery Deferred und Dialogfeld
Sie das Javascript um zu bewirken, warten Sie auf den Abschluss des latenten Objekt nicht in der Lage sein, so gibt es keine Möglichkeit zu 'Rückkehr 'später. Ich bin mir nicht sicher, wie ich das "beheben" soll, aber ich denke, der Weg ist, Ihren Code/Ihre Logik zu reorganisieren. – Ian
Nein, Sie können nicht synchron von einer asynchronen Aufgabe zurückkehren. Übergeben Sie stattdessen das zurückgestellte! – Bergi
bedeutet also, dass ich zu einer anderen Funktion übergehe, n benutze die andere Funktion, um die Validierungsprüfung anstelle der gleichen Funktion durchzuführen? Kann mir ein bisschen richtiges zeigen? Erstelle eine globale Variable, setze sie basierend auf dem Unterschied auf Wahr/Fase und benutze dann in der anderen Funktion die globale Variable, um die Überprüfung durchzuführen. Benutze danach die Funktion, um Wahr/Falsch zurückzugeben?Ich bin immer noch neu zu entwirren, nur durch google n puzzle es heraus, kommen Sie so etwas heraus – Se0ng11