Javascript返回false,仍然提交表单

时间:2011-06-20 14:36:41

标签: javascript forms

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

按钮代码:

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

非工作功能示例:

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

功能发起人:

function formvalidation()
{
    ZeroPhones();
    BlankPC();
    BlankSite();
    BlankSeats();
    phone_change();
}// End of formvalidation

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

谢谢, 乙

6 个答案:

答案 0 :(得分:8)

return false;调用的函数中需要onclick,在这种情况下formvalidation

通过“root”函数调用的函数返回false没有任何效果,返回值将丢失。

答案 1 :(得分:5)

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

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

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

  // default to return true
  return true;
}

因此,当函数实际上返回false时,false返回会返回到绑定函数。

答案 2 :(得分:3)

调用javascript函数onSubmit of form而不是调用按钮onClick。

javascript代码

function validate()
{
alert('test');
return false;
}

<form action="test" method="post" onsubmit="return validate();">

这对我来说很好。

答案 3 :(得分:2)

BlankPC()由formvalidation调用,因此false返回到方法formvalidation()。 你的formvalidation()总是从结尾落下,这与返回true相同。 如果您希望在其中一个验证失败时返回false,则应该是:

function formvalidation()
{
    retval = true;
    retval &= ZeroPhones();
    retval &= BlankPC();
    retval &= BlankSite();
    retval &= BlankSeats();
    retval &= phone_change();

    return retval;
}// End 

这可以优化一堆,但你可以得到它的要点。

答案 4 :(得分:1)

formvalidation()未返回false。

也许你想要这样的东西:

function formvalidation()
{
  if(!ZeroPhones() ||
     !BlankPC() ||
     !BlankSite() ||
     !BlankSeats() ||
     !phone_change())
    return false;
}

答案 5 :(得分:0)

我对这个问题的解决方案是禁用提交按钮,直到验证成功为止。遵循这些原则。

function checkPassword() {
    //this is my submit button

   document.getElementById('nextBtn').setAttribute('disabled','disabled');

    password1 = document.getElementsByName("pwd1")[0].value;
    password2 = document.getElementsByName("pwd2")[0].value;

    if (password1 == '') {
        // If password not entered
        alert ("Please enter Password");
        return false;
    } else if (password2 == ''){
        // If confirm password not entered
        alert ("Please enter confirm password");
        return false;
    } else if (password1 != password2) {
        // If Not same return False.
        alert ("\nPassword did not match: Please try again...");
        return false;
    } else {
    document.getElementById('nextBtn').removeAttribute('disabled');
    return true;
  }
}