1

我有这个简单的 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是一个按钮,它只调用一些重定向到另一个页面的类。


问题

  • 如果我直接调用这两个函数中的任何一个,function1()否则function2()按钮将不会被执行,这就是我想要的。但是...:
    当我打电话时mainfunction(),每个功能中的警报都有效,但return false;似乎不起作用,因为不幸的是按钮被执行了。

这是为什么?我怎样才能调用这两个函数并让它们return false;工作?

4

3 回答 3

1

mainfunction没有返回任何东西。试试这个:

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

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

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

编辑 一个有趣的技巧,让两个函数都被执行,并且true只有在两个函数都执行时才返回true

function mainfunction() {
    return (function1() + function2()) === 2;
}
于 2013-03-03T21:18:26.117 回答
0

mainfunction不返回任何东西,您没有使用来自任何一个function1或的返回值function2

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

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

    return false; // prevent form submission
}

返回未定义(您现在在问题示例中所做的事情)是不够的。

于 2013-03-03T21:17:22.747 回答
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();" />

但您需要更改 mainfunction:

function mainfunction() {
    function1();
    function2();
    return false;
}
于 2013-03-03T21:31:02.143 回答