我正在使用jquery確認(https://craftpip.github.io/jquery-confirm/)確認表單上的取消,但它不起作用。我的函數沒有返回jQuery的確認結果:獲取jquery確認返回值
function cnf(cntn, fn, prm) {
var res = false;
$.confirm({
title: "",
content: cntn,
confirmButton: "Yes",
cancelButton: "No",
confirm: function() { res = true; fn(prm); },
cancel: function() { }
});
return res;
}
function emptyfn() { }
function link() {
return cnf("Cancel changes?", emptyfn);
}
...
<form method="post" action="whatever.php">
<label for="test">Test Input</label>
<input type="text" class="form-control" id="test" maxlength="40" name="test" autofocus>
<input type="submit" name="button" value="Submit" class="btn-primary">
<input type="submit" name="button" value="Cancel" class="btn-primary" onclick="return link();" formnovalidate>
</form>
(我知道我不需要在這個例子中的「Fn」和「PRM」,但我想在其他地方推廣使用的代碼) 。
當我試圖通過添加警報調試代碼,事情發生了奇怪和警報的確認之前出現了:
function link() {
var tmp = cnf("Cancel changes?", emptyfn);
alert(tmp);
return tmp;
}
我怎樣才能正確的代碼,爲什麼我的調試代碼得到執行了(是否與函數中的返回值有關)?
Impossible ..... JavaScript中沒有等待,所以你不能暫停異步調用,這就是爲什麼腳本在用戶做出選擇時有回調的原因。 – epascarello
@epascarello據我所知,如果調用本地警報,它將停止腳本執行,直到您關閉警報窗口 – Nikita
是的,因爲這是本機警報,確認,提示工作的方式。您不能在JavaScript中重新創建該功能。 – epascarello