提交多个javascript函数

Mar*_*ria 8 javascript forms function onsubmit

有谁知道如何提交多个功能?我打算做的是:onsubmit检查所有这些函数是否返回true,如果所有函数都返回true,那么我执行action ="checked.html"

<form id="myForm" name="myForm" action="checked.html" method="post"
onsubmit="return validateName() || validatePhone() || validateAddress() ||
validateEmail()">
Run Code Online (Sandbox Code Playgroud)

然而,实际发生的是,计算机从左到右检查代码,下一个函数的结果将替换前一个,依此类推,直到结束.所以,即使所有3个第一个函数都返回false,只要最后一个函数为true,计算机就会执行action ="checked.html",这不是我打算做的......有人可以请帮助我这个,就像4小时我试图解决它:谢谢!

此外,当我尝试做类似的事情时<form onsubmit="return verify1() && verify2()">,它不起作用,它只是检查verify1(),而不是以下的...... :(

CLARIFCATION:在提交时,我想要调用四个验证函数.除非所有四个函数都返回true,否则应该阻止提交,但是即使其中一些函数返回false,也应始终调用所有四个函数.

nnn*_*nnn 20

&而不是&&.

&& 使用短路评估,因此如果左手操作数是假的,则不评估右手操作数.

& 总是评估两个操作数.

onsubmit="return !!(validateName() & validatePhone()
                      & validateAddress() & validateEmail());"
Run Code Online (Sandbox Code Playgroud)

编辑:对不起,我忘记了&不会返回实际的布尔值.将表达式包装在括号中并使用double !将其转换为(现在)显示.(如果在if测试中使用结果,则无需担心,但事件处理程序的返回值应该是实际的布尔值.)

PS:这是一个相当笨重的演示,表明所有四个函数都被调用但产生了你需要的整体真假结果:http://jsfiddle.net/nnnnnn/svM4h/1/


Chr*_*ray 7

将代码更改为使用AND而不是OR

onsubmit ="return validateName()&& validatePhone()&& validateAddress()&& validateEmail()"

原因是,如果你使用OR,第一个函数返回true javascript将不会费心去检查其他函数.此外,您不想使用OR,因为如果第一次检查为false且第二次检查为true,则表单仍将提交,因为至少有一项检查为TRUE.

请参阅小提示以显示此作品,检查执行并显示警告消息,但因为check2返回false,表单不提交 - 如果您想要使用checks1和check2函数的返回结果以及使用&&和||

在更好地理解问题之后,你需要使用单个&,但是因为true & true返回1而不true需要像这样写它

onsubmit ="return((validateName()&validatePhone()&validateAddress()&validateEmail())== 1)"