从javascript函数调用另一个返回false的javascript函数;?

时间:2013-03-03 21:15:27

标签: javascript asp.net function return

我有这个简单的javascript函数,它调用其他2个函数:

<script type="text/javascript" language="javascript">

    function mainfunction() {
        function1()
        function2()
    }

    function function1() {
        if (//some test) {
            alert('test function1');
            return false;
        }
    }

   function function2() {
        if (//some test) {
            alert('test function2');
            return false;
        }
    }

</script>

我这样打电话给mainfunction()

<form id="form1" runat="server" onSubmit="return mainfunction()">

或者像这样:

<asp:Button ID="btntest" runat="server" Text="test button" OnClientClick="return mainfunction()" />

btntest是一个按钮,它只调用一个重定向到另一个页面的类。


问题

  • 如果我直接调用2个函数function1()function2()中的任何一个,那么该按钮将不会被执行,这就是我想要的。但是...:
    当我拨打mainfunction()时,每个功能都会发出警报,但return false;似乎无法正常工作,因为该按钮很可能会被执行。

为什么?如何调用2个函数并让return false;工作?

3 个答案:

答案 0 :(得分:1)

您的mainfunction没有返回任何内容。试试这个:

function mainfunction() {
    return function1() && function2();
}

正如评论中所述,要让mainfunction正常工作,您必须更改其他功能,以便始终返回truefalse

function function1() {
    if (//some test) {
        alert('test function1');
        return false;
    }
    return true;
}

修改 一个有趣的黑客,只有当两个函数都是true时,才能执行这两个函数并仍然返回true

function mainfunction() {
    return (function1() + function2()) === 2;
}

答案 1 :(得分:0)

mainfunction不会返回任何内容,您没有使用function1function2

中的返回值

要防止表单提交,您需要处理程序本身返回false,例如:

function mainfunction() {
    function1();
    function2();

    return false; // prevent form submission
}

返回undefined(你在问题的例子中正在做的事情)是不够的。

答案 2 :(得分:0)

试试这个:

<asp:Button ID="btntest" runat="server" Text="test button" OnClientClick="mainfunction(); return false;" />

这也有效:

<asp:Button ID="btntest" runat="server" Text="test button" OnClientClick="return mainfunction();" />

但您需要更改主要功能:

function mainfunction() {
    function1();
    function2();
    return false;
}