【问题标题】:Not all validation checks execute onsubmit.并非所有验证检查都会在提交时执行。
【发布时间】:2013-05-16 23:01:42
【问题描述】:

使用表单和 javascript 来验证字段。
这是我调用验证 javascripts 的代码,所有这些都在单独的文档中,但指定了文件路径。

    function validation()
    {
        return validateTitle()
            && validatefirstName()
            && validatesecondName()
            && validateAge()
            && validateEmail()
    }
    </script>
</head>
<body>
    <form name="subscribeForm" action="welcome.php" method="post" onsubmit="return validation();">

最后两个,validateAgevalidateEmail 不执行。
以下是每个 javascript 函数的代码:

function validateEmail()
{
    var x=document.getElementById('emailadd').value;
    var atpos=x.indexOf("@");
    var dotpos=x.lastIndexOf(".");
    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length || x == null)
    {
        alert("Not a valid e-mail address");
        return false;
    }
}

function validateAge()
{
    var b=document.forms["subscribeForm"]["bday"].value;
    if (b==null || b=="" || b < 1 || b > 105)
    {
        alert("Age invalid.");
        return false;
    }
    else if (isNaN(b))
    {
        alert("Please enter a numeric value.");
        return false;
    }
}

【问题讨论】:

  • 你没有在任何函数中返回true...
  • 我输入了 return = true;对于这两个验证,它们仍然不执行,现在 validatesecondName();

标签: javascript forms function onsubmit


【解决方案1】:

如果验证通过,您的所有函数都需要返回一个 thruty 值。但是,一旦一个函数返回false 或错误值,验证过程就会停止。这是因为&amp;&amp; 运算符使用short-circuit evaluation

基本上,如果validateTitle() 失败,其余函数将不会被执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 2019-04-30
    • 2012-07-08
    相关资源
    最近更新 更多