我试图检查以确保在向中继器添加一行时中继器的页脚中的某些字段不为空。我正在尝试通过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,而不是回发。我该如何正确地做到这一点?

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

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;”确实停止了回发。

最佳答案

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

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

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

10-09 16:40
查看更多