我有这个简单的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;
似乎无法正常工作,因为该按钮很可能会被执行。为什么?如何调用2个函数并让return false;
工作?
答案 0 :(得分:1)
您的mainfunction
没有返回任何内容。试试这个:
function mainfunction() {
return function1() && function2();
}
正如评论中所述,要让mainfunction
正常工作,您必须更改其他功能,以便始终返回true
或false
:
function function1() {
if (//some test) {
alert('test function1');
return false;
}
return true;
}
修改强>
一个有趣的黑客,只有当两个函数都是true
时,才能执行这两个函数并仍然返回true
:
function mainfunction() {
return (function1() + function2()) === 2;
}
答案 1 :(得分:0)
mainfunction
不会返回任何内容,您没有使用function1
或function2
要防止表单提交,您需要处理程序本身返回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;
}