Javascript返回false,仍然提交表单

Bif*_*rss 10 javascript forms

我有一个带有JS验证的表单,如果出现错误,提交按钮应该"灰显"并且表单不应该提交,但是最后几个函数似乎提交表单,即使它们弹出警告框! ?!?!

按钮代码:

<input type="submit" name="button" id="button" 
  onclick='return formvalidation();' value="Next" />
Run Code Online (Sandbox Code Playgroud)

非工作功能示例:

function BlankSite() {
    var SiteNum= document.getElementsByName("sitesinput")[0].value;
        if ((SiteNum == "") || (SiteNum == 0))
            {
        alert("You have not selected an amount of sites.")
        document.forms[0].button.disabled=true;
        return false;
            }
    }
Run Code Online (Sandbox Code Playgroud)

功能发起人:

function formvalidation()
{
    ZeroPhones();
    BlankPC();
    BlankSite();
    BlankSeats();
    phone_change();
}// End of formvalidation
Run Code Online (Sandbox Code Playgroud)

这很奇怪,我尝试了各种各样的工作都无济于事!

谢谢,B.

Sha*_*ard 8

在这种情况下,您需要具有return false;调用的函数.onclickformvalidation

使用"root"函数调用的某些函数返回false没有任何影响,返回值将丢失.


Bra*_*tie 5

它们返回false(并且是break,这实际上是无法访问的代码),但结果永远不会返回到父验证函数.您的验证器(假设它与表单操作绑定)应如下所示:

function formvalidation(){
{
  if (!ZeroPhones())
    return false;
  if (!BlankPC())
    return false;

  //
  // keep checking for false and return false.
  //

  // default to return true
  return true;
}
Run Code Online (Sandbox Code Playgroud)

因此,当函数实际上返回false时,错误的返回被返回到绑定函数.