为什么我的函数返回“ undefined”而不是布尔值

时间:2020-02-12 17:42:35

标签: javascript return-value

$(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;

    });
}

在表单Submit中,我调用了该函数,并且如果函数返回false,我将不执行提交操作。 但是xx变量的值始终是不确定的。

请告知

使用警报检查。最后一行函数“ checkStockOfProduct”中的变量“ allowSubmitForm”具有值,而不是“未定义” 但是在“提交”中则未定义

2 个答案:

答案 0 :(得分:0)

  1. 我了解您要返回布尔值,因此请使用true和false而不是'true'和'false' 为什么?不带引号的是布尔型,而带引号的是字符串。 javascript中的非空字符串将始终返回true,而空字符串将返回false(您在那儿返回的是非空字符串,结果显然不是这种情况下的结果)。

  2. var有点棘手,我建议下次使用let。由于似乎在checkStockOfProduct函数中您没有做很多事情,因此我将其重构为==>

const checkSumOfProduct = (whatever...) ? false : true
  1. 我注意到您问题的更新,我真的没有得到您要尝试做的事情,但是对我来说,好像checkStockOfProduct的结果决定了您是否要阻止在提交时提交默认表单并返回false或不。 我还要假设CheckSumOfProduct函数是同步的 让我们重构该代码以完成您尝试做的事情,但是看起来像这样==>
$(document).ready(function() {
    $("form").submit(function(e) {
        if(!CheckStockOfProduct()){
           e.preventDefault()
           return false
         } 
           return true
    });
});

让我知道这是否可行...我正在运输途中并在移动atm上

答案 1 :(得分:-1)

尝试

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();
    });
});
相关问题