[英]Why is my function returning “undefined” instead of boolean
$(document).ready(function() {
$("form").submit(function(e) {
if (!checkStockOfProduct())
{
e.preventDefault();
return false;
}
return true
});
});
<script src="~/Scripts/storeinputoutput.js"></script>
storeinputoutput.js 文件:
function checkStockOfProduct() {
var allowSubmitForm = true;
$("table#StoreItemdatatable > tbody > tr").each(function () {
.
.
.
var storeId = $('#StoreID').val();
var stock = null;
var URL = '/aaa/bbb'
$.ajax({
async: false,
url: URL,
contentType: 'application/x-www-form-urlencoded',
dataType: 'json',
data: {
productNServiceID: productNServiceID,
storeID: storeId
},
type: 'POST',
success: function (data) {
stock = data.Stock;
}
, error: function (jqXHR, exception) {
}
});
if (...) {
allowSubmitForm = false;
}
return allowSubmitForm;
});
}
在 form submit 中,我調用了該函數,如果函數返回 false,我不會執行提交操作。 但是 xx 變量的值總是未定義的。
使用警報檢查。 最后一行中函數“checkStockOfProduct”中的變量“allowSubmitForm”具有值而不是“undefined”但在Submit中它是undefined
我知道你想返回布爾值,所以使用 true 和 false 而不是 'true' 和 'false' 為什么? 不帶引號的是布爾值,帶引號的是字符串。 javascript 中的非空字符串將始終返回 true 而空字符串將返回 false(您在那里 returnimg 非空字符串,結果顯然不是您在這種情況下想要的)。
var 有點棘手,我建議我們下次使用 let 。 由於您在 checkStockOfProduct 函數中似乎沒有做很多事情,因此我會將其重構為 ==>
const checkSumOfProduct = (whatever...) ? false : true
CheckSumOfProduct
函數是同步的讓我們重構該代碼以執行您嘗試執行的相同操作,但看起來像這樣 ==>$(document).ready(function() {
$("form").submit(function(e) {
if(!CheckStockOfProduct()){
e.preventDefault()
return false
}
return true
});
});
如果這行得通,請告訴我...我正在運輸途中並使用移動自動取款機
嘗試
function checkStockOfProduct() {
var allowSubmitForm = true;
if (...) {
allowSubmitForm = false;
}
return allowSubmitForm;
};
並根據函數返回值調整您的 submit() 事件處理程序:
$(document).ready(function () {
$("form").submit(function (e) {
if (checkStockOfProduct()) {
//valid
return;
}
//invalid
e.preventDefault();
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.