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
}
嗨大家好,有沒有機會返回值?我希望通過showDialog()。done()函數返回true和false,但不能用於validatefield()函數,但它不能用作我想要的,我不能指定給bAllow,因爲我已經有一個返回false來保存執行下一行的對話框,任何想法?或者像這樣做是正確的?jQuery延期和對話框
您將無法使Javascript來等待延遲對象的完成,所以沒有辦法'回報'以後。我不知道如何「修復」這一點,但我認爲方法是重新組織您的代碼/邏輯 – Ian
不,您不能從異步任務同步返回。相反,通過延期! – Bergi
這意味着我傳遞給另一個函數,n使用其他函數來執行驗證檢查而不是相同的函數?能告訴我一些正確的方法嗎?創建一個全局變量,基於defferend將其設置爲true/fase,然後在另一個函數中,使用全局變量進行檢查,然後使用該函數返回true/false?我還是新來的,只是搜索谷歌謎團它出來,出來這樣的事情 – Se0ng11