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

从javascript函数调用另一个javascript函数,返回false;?,javascript,asp.net,function,return,Javascript,Asp.net,Function,Return,我有一个简单的javascript函数,它调用其他2个函数: 函数mainformation(){ 职能1() 职能2() } 函数function1(){ if(//一些测试){ 警报(“测试功能1”); 返回false; } } 函数function2(){ if(//一些测试){ 警报(“测试功能2”); 返回false; } } 我这样调用main function(): 或者像这样: btntest是一个按钮,它只调用某个类,重定向到另一个页面 问题 如果我直接调用两个

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


函数mainformation(){
职能1()
职能2()
}
函数function1(){
if(//一些测试){
警报(“测试功能1”);
返回false;
}
}
函数function2(){
if(//一些测试){
警报(“测试功能2”);
返回false;
}
}
我这样调用
main function()


或者像这样:


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


问题
  • 如果我直接调用两个函数中的任何一个
    function1()
    function2()
    ,那么按钮将不会执行,这就是我想要的。但是……:
    当我调用
    mainformation()
    时,每个函数中的警报都起作用,但
    返回false似乎不起作用,因为按钮不幸被执行

为什么呢?如何调用这两个函数并让它们的
返回false工作?

main函数
不返回任何内容,您没有使用
function1
function2

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

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

    return false; // prevent form submission
}

返回未定义的(在问题的示例中,您现在正在执行的操作)是不够的。

main函数
不返回任何内容,您没有使用
function1
function2
的返回值

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

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

    return false; // prevent form submission
}

返回undefined(在问题的示例中,您现在正在执行的操作)是不够的。

您的
main函数
没有返回任何内容。试试这个:

function mainfunction() {
    return function1() && function2();
}
如评论中所述,要使您的
main函数
正常工作,您必须更改其他函数以始终返回
true
false

function function1() {
    if (//some test) {
        alert('test function1');
        return false;
    }
    return true;
}
编辑 一个有趣的技巧是,两个函数都被执行,并且只有当两个函数都是
true
时才返回
true

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

您的
main函数
没有返回任何内容。试试这个:

function mainfunction() {
    return function1() && function2();
}
如评论中所述,要使您的
main函数
正常工作,您必须更改其他函数以始终返回
true
false

function function1() {
    if (//some test) {
        alert('test function1');
        return false;
    }
    return true;
}
编辑 一个有趣的技巧是,两个函数都被执行,并且只有当两个函数都是
true
时才返回
true

function mainfunction() {
    return (function1() + function2()) === 2;
}
试试这个:

function mainfunction() {
    return function1() && function2();
}
<asp:Button ID="btntest" runat="server" Text="test button" OnClientClick="mainfunction(); return false;" />
试试这个:

function mainfunction() {
    return function1() && function2();
}
<asp:Button ID="btntest" runat="server" Text="test button" OnClientClick="mainfunction(); return false;" />

函数1
返回
未定义的
,而不是
undefined
不是真的,所以永远不会调用
function2
。@icktoofay:好的,我应该说你必须通过返回
true
来扩展你的函数。我会解决的。谢谢你的提示,谢谢Amberlamps和icktoofay。我尝试了解决方案:我更改了main函数和前面提到的其他2个函数,但不幸的是现在只调用了function1。谢谢大家,现在不管function1是否失败,都会调用function2。但是这让我有点不知所措,我真的不明白黑客的目的。我还注意到,除非我像这样调用main函数:
返回main函数()
function1
返回
未定义的
,而不是
undefined
不是真的,所以永远不会调用
function2
。@icktoofay:好的,我应该说你必须通过返回
true
来扩展你的函数。我会解决的。谢谢你的提示,谢谢Amberlamps和icktoofay。我尝试了解决方案:我更改了main函数和前面提到的其他2个函数,但不幸的是现在只调用了function1。谢谢大家,现在不管function1是否失败,都会调用function2。但是这让我有点迷失了方向,我真的不明白黑客的目的。我还注意到,除非我像这样调用main函数,否则它不会工作:
return main function()
谢谢AD7six,但结果并不总是错误的。不过,我明白你的意思了,谢谢你,main函数没有返回任何东西。谢谢你,AD7six,但是结果并不总是错误的。不过,谢谢你,因为我明白了你的意思,mainfunction没有返回任何内容。谢谢你的回答,它让我意识到在调用mainfunction()时我也必须使用return。但是mainfunction()并不总是返回false。感谢您的回答,这让我意识到在调用mainfunction()时也必须使用return。但是,mainfunction()并不总是返回false。