簡體   English   中英

為什么我的函數返回“未定義”而不是布爾值

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

  1. 我知道你想返回布爾值,所以使用 true 和 false 而不是 'true' 和 'false' 為什么? 不帶引號的是布爾值,帶引號的是字符串。 javascript 中的非空字符串將始終返回 true 而空字符串將返回 false(您在那里 returnimg 非空字符串,結果顯然不是您在這種情況下想要的)。

  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
    });
});

如果這行得通,請告訴我...我正在運輸途中並使用移動自動取款機

嘗試

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM