javascript - javascript 在 switch 中返回 false 后仍在发回

标签 javascript c# asp.net validation switch-statement

当尝试向中继器添加行时,我正在尝试检查以确保中继器页脚中的某些字段不为空。我正在尝试通过 javascript 验证这一点,并使用多个不同中继器的可重用代码(通过滥用 ID):

switch (category)
        {
            case 'Hardware':
                if ($("#HWtable").find("#AddProduct").val() == null ||
                   $("#HWtable").find("#AddPartNumber").val() == null ||
                   $("#HWtable").find("#AddPartCost").val() == null ||
                   $("#HWtable").find("#AddUnitPrice").val() == null ||
                   $("#HWtable").find("#AddQuantity").val() == null) 
                {
                    alert("show HW message");
                    HWEmptyFieldAlert.show();
                    return false;
                }
                break;

问题是,即使我在那里返回 false,它仍然会发回。我还将它包含在我的 clientclick 调用中:

onClientClick="return EmptyFieldCheck('Hardware');"

如果我注释掉开关并只说 return false,一切都会按预期进行。我最好的猜测是我只是从 if 或 switch 中返回,而不是回发。我该如何正确地做到这一点?

编辑:根据下面其他人的建议,我尝试了一个标志并在客户端单击时反转真/假状态。我现在下面的内容仍在发回,我真的不知道为什么。当我点击时,我确实看到了警报,所以已经到了这一步。

var emptyFlag;

        switch (category)
        {
            case 'Hardware':
                /*
                if ($("#HWtable").find("#AddProduct").val() == null ||
                   $("#HWtable").find("#AddPartNumber").val() == null ||
                   $("#HWtable").find("#AddPartCost").val() == null ||
                   $("#HWtable").find("#AddUnitPrice").val() == null ||
                   $("#HWtable").find("#AddQuantity").val() == null)
                {
                */
                    alert("show HW message");
                    HWEmptyFieldAlert.show();
                    emptyFlag = false;
                //}
                break;
            default:
                alert("doesn't work");
                return false;
                break;
        }

        return emptyFlag;

这和我使用中继器的OnItemCommand功能有关系吗?返回 false 而不是 emptyFlag 不再有效。 OnClientClick =“返回错误;”不过确实会停止回发。

最佳答案

在这种情况下,确实是 return false 是从 switch 返回,而不是整个函数。您想要做的是创建一个标志变量,当您想在切换后从函数返回时,请检查该标志:

function EmptyFieldCheck( .. )
{
    var returnFlag = false;
    switch (category) {
        case 'Hardware':
            if(..)
            {
                ...
                returnFlag = true;
            }
            break; 
        ...
    }
    if(returnFlag) return false; 
    /* Other posting code here */
}

关于javascript - javascript 在 switch 中返回 false 后仍在发回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33504554/

相关文章:

c# - 与循环中的值相关联的可为空的 Int 类型 - 你最喜欢的方法是什么?

javascript - 为什么内置函数没有原型(prototype)属性?

c# - 如何创建没有碎片的 Uri(将 # 转换为 %23)

c# - 不使用 Visual Studio 创建 Wix Bootstrapper

c# - ASP.NET MVC 4 异步 Controller 回调

css - ASP.NET(脚本或 asp 之外的内容不受支持 :content)

javascript - Node.dispatchEvent(new CustomEvent ('click' )) 自 Chrome v53 起不再触发 anchor

javascript - 在 div 中显示 .doc

javascript - 获取原始图像进行裁剪,忽略宽度属性?

c# - 如何在 SQL Server 中将波斯日期转换为公历日期