javascript - 从一个 JavaScript 函数调用另一个具有 return false 的 JavaScript 函数;?

标签 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; 似乎不起作用,因为不幸的是按钮被执行了。

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

最佳答案

您的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;
}

关于javascript - 从一个 JavaScript 函数调用另一个具有 return false 的 JavaScript 函数;?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15190987/

相关文章:

javascript - 在 HTML 中使用未定义的标签名称?

javascript - Fancytree 选中时删除蓝色边框

c# - 单击时更改链接按钮的颜色?

asp.net - 部署 MVC,无需关闭整个站点

javascript - 如何编写一个接受 2 个字符串的函数,并将它们添加到相应数组的开头

javascript - SignalR 无法到达 JS 客户端功能

javascript - 缩放功能

sql - 调用 pl sql 函数问题

javascript - 在函数中使用 eval 来替换图层名称上的前缀?

javascript - 如何使用 Fetch(不是 ajax)将 Promise 的解析存储到变量中