表单验证脚本问题

时间:2014-03-19 22:36:51

标签: javascript forms validation

我在表单顶部有两个脚本。第一个工作完美,并为电子邮件地址提供客户端验证。第二个根本不起作用(即使我将我的onsubmit改为JUST那个函数名)。我确定我错过了一些非常明显的东西。我可以将其设置为服务器端验证,但使用我正在使用的软件的API完全是表单条目的核心,所以我试图避免这种情况。

  <script>
     function validateForm()
     {
        var x = document.forms["form5"]["element_1"].value;
        var atpos = x.indexOf("@");
        var dotpos = x.lastIndexOf(".");
        if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length)
        {
           alert("Not a valid e-mail address");
           return false;
        }
     }
  </script>
  <script>
     function validateMisc()
     {
        if (document.forms["form5"]["element_27"].value !== null && 
            document.forms["form5"]["element_57"].value == null)
        {
           alert("Misc details are required if a value is entered for Misc Projects.");
           return false;
        }
     }
  </script>

这是我目前的表单操作命令。

<form 
   action="<?php echo $_SERVER["PHP_SELF"]?>" 
   name="form5" 
   action="demo_form.asp" 
   onsubmit="return validateForm() && validateMisc();" 
   method="POST">

2 个答案:

答案 0 :(得分:0)

如果存在name =“element_27”和name =“element_57”的输入,则它们永远不会为空。它们可能是空字符串。 .value ===''和.value!==''

答案 1 :(得分:0)

更改您的表单,如

<form action="<?php echo $_SERVER["PHP_SELF"]?>" name="form5" action="demo_form.asp" onsubmit="return validateForm();" method="POST">

然后我会修改javascript,如:

<script>
function validateForm()  
{
var x=document.forms["form5"]["element_1"].value;
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
{
   alert("Not a valid e-mail address");
   return false;
}
else 
{
//If the email is valid, lets call the other function
   validateMisc()
}
}
</script>


<script>
function validateMisc()
    {


    if (document.forms["form5"]["element_27"].value !== null && document.forms["form5"]["element_57"].value == null)

{

    alert("Misc details are required if a value is entered for Misc Projects.");

    return false;
 }
}
</script>

我个人没有检查代码,所以它无法正常工作。在这种情况下,我道歉