[英]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.