在表单提交时调用多个JavaScript函数

3

我正在尝试调用多个JavaScript函数。 即使我的函数返回false,它也会提交。 我会收到警报消息,但它仍然会提交。

这是我的表单。

<form name="myform" id="myform" action="receipt.html" method="post" onSubmit="return allValidation();">

你没有使用返回值。 - SLaks
@SLaks,我现在已经编辑了这些函数。这样可以吗? - dafyddgj
4个回答

2

allValidation中没有返回任何内容,因此它将继续执行下一个方法。尝试这样做:

function allValidation() {
    return validateForm() && selectCountry() && validateEmail();
}

您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Darshan Patel
现在,如果 validateForm 为 true,则提交并绕过其他两个函数。 - dafyddgj
“return true” 应该没有括号。我已经修改了你的问题并提出了建议。希望这能解决你的问题。继续努力! - Darshan Patel
非常好!非常感谢你。 - dafyddgj

2

您可以使用多个函数,然后 and 它们的结果来获得最终验证。在所有验证成功的函数中还可以添加 return true 语句。

function allValidation()
   {
      return (validateForm() && selectCountry() && validateEmail());
   }

1

这是因为您的函数始终返回true,无论validateForm()、selectCountry()和validateEmail()函数返回什么值。

将您的allValidation()函数更改为以下内容:

function allValidation()
{
    return validateForm() && selectCountry() && validateEmail();
}

这个绕过了selectCountry()和validateEmail()函数,如果validateForm()函数正常运行,就会提交。 - dafyddgj
@dafyddgj,我不这么认为... 我在 Chrome 47、Firefox 42 和 IE 8 上测试了代码,它们都可以正常工作。 Javascript 对函数进行逐一评估,从左到右开始,如果有任何一个函数返回 false,则停止。在这种情况下,allValidation() 返回 false,确实,其余的函数都被忽略了。 如果所有函数都返回 true,则 allValidation() 返回 true。 因此,使用 return validateForm() && selectCountry() && validateEmail();return (validateForm() && selectCountry() && validateEmail()); 具有完全相同的效果。 - Ciprian Stoica

0
function allValidation(){
  return validateForm() && selectCountry() && validateEmail();
}

1
请避免仅提供代码的答案。请添加解释。 - Jonathan Lam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接