繁体   English   中英

Javascript验证

[英]Javascript validation

请帮我。 验证无效

<script type="text/javascript"  src="javascript.js">
function validation()
{
    var fname=document.forms["form1"]["fname"].value;
    var lname=document.forms["form1"]["lname"].value;
    var idnumber=document.forms["form1"]["idnumber"].value;
    var email=document.forms["form1"]["email"].value;
    var atpos=email.indexOf("@");
    var dotpos=email.lastIndexOf(".");
    var address=document.forms["form1"]["address"].value;
    var phonenumber=document.forms["form1"]["phonenumber"].value;

    if (fname==null || fname=="")
    {
        alert("Name should be entered correctly");
        return false;
    }

    if (lname==null || lname=="")
    {
        alert("Name should be entered correctly");
        return false;
    }

    if (isNaN(idnumber))
    {
        alert("Please enter a valid id number");
        return false;
    }

    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
    {
        alert("Please enter a valid e-mail address");
        return false;
    }

    if(address==null || address=="")
    {
        alert("Please insert your address");
        return false;
    }
    if (isNaN(phonenumber))
    {
        alert("Please enter a valid phone number");
        return false;
    }


}
</script>
<form name="form1" action="validation.php" method="post"  onsubmit=" return validation(this);return false"> 
   Firstname:<input type="text" name="fname"><br/>
   Lastname:<input type="text" name="lname"><br/>
   Nation ID Number:<input type="text" name="idnumber"  minlength="8"maxlength="8"><br/>
   Email address: <input type="text" name="email"><br/>
   Address:<input type="text" name="address"><br/>
   Pnone number:<input type="text" name="phonenumber"><br/>
   <input type="reset" name="reset" value="reset">
   <input type="submit" name="submit" value="submit">
</form>

该代码存在许多问题:

  • 您确实不应该在调用src="javascript.js"的同时使用相同的<script>元素,并且同时声明一个函数。 使用单独的元素,如下所示:

     <script type="text/javascript" src="javascript.js"></script> <script type="text/javascript"> function validation() { ... } </script> 
  • <form>元素中,有一个多余的;return false 表单将从return validation(this)获取值,之后的任何值都将被忽略。 另外,不需要“;” 使用嵌入式javascript时。

  • 您正在将this作为参数传递给validation()函数,但是验证期望没有参数。 应该:

    function validation(oForm)

  • 如果您已经通过了this认证,为什么不使用它呢? this是对元素本身的引用,因此对于验证功能,它是对表单的引用。 因此,无需命名表格。

     <form action="validation.php" method="post" onsubmit="return validation(this)"> 

函数中的引用将是:

function validation(oForm)
{
    var fname=oForm["fname"].value;
    var lname=oForm["lname"].value;
}

仅这些更改就可以解决您的问题。 我将进一步检查代码以查看是否还有其他内容。

编辑:

我已经测试了验证,并且可以正常工作。 唯一需要的修改是从<SCRIPT>标记中删除scr=validation.js 正如我建议的那样,使用单独的标签。

但我强烈建议您考虑我提到的其他问题。

另外,有关验证本身的其他建议:

  • 对于字母数字字段,无需检查null ,仅使用“”就足够了。 您可以简单地使用:

      if (lname=="") 
  • 名字和姓氏错误消息是相同的。 这会使用户感到困惑。

  • 避免将电话号码测试为数字。 请记住,“(407)234-5678”是一个完全有效的电话号码,尽管它将使您的测试失败。 除非有充分的理由将其视为数字(自动拨号?),否则请将其保留为普通的文本字段。

  • 在“国家ID”字段中:HTML中没有minlength 仅最大maxlength

  • 如果值为空,则isNaN(idnumber)将返回true 并且如果length <8。 我认为这是必填字段,具有所需的长度,因此您应该使用:

      if (isNaN(idnumber) || idnumber.length != 8) { alert("Please enter a valid id number"); return false; } 
  • 对于所有测试,请考虑调整值。 目前,“”(仅限空格)之类的输入将通过您的测试。 Javascript没有内置的修整功能,但是可以使用以下方法完成:

    功能trim(texto){

     return texto.replace(/^\\s*|\\s*$/g, ""); 

    }

像这样使用:

var fname=trim(oForm["fname"].value);
  • 为了清楚起见,请使用显式return true; 在所有测试成功之后,在validation()

这是所有更改后的建议代码:

    <script type="text/javascript" scr="validation.js"></script>
    <script type="text/javascript">
    function validation(oForm)
    {
        var fname       = trim(oForm["fname"].value);
        var lname       = trim(oForm["lname"].value);
        var idnumber    = trim(oForm["idnumber"].value);
        var email       = trim(oForm["email"].value);
        var atpos       = email.indexOf("@");
        var dotpos      = email.lastIndexOf(".");
        var address     = trim(oForm["address"].value);
        var phonenumber = trim(oForm["phonenumber"].value);

        if (fname=="")
        {
            alert("First name should be entered");
            return false;
        }

        if (lname=="")
        {
            alert("Last name should be entered");
            return false;
        }

        if (isNaN(idnumber) || idnumber.length != 8)
        {
            alert("Please enter a valid id number");
            return false;
        }

        if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
        {
            alert("Please enter a valid e-mail address");
            return false;
        }

        if(address=="")
        {
            alert("Please insert your address");
            return false;
        }
        if (isNaN(phonenumber))
        {
            alert("Please enter a valid phone number");
            return false;
        }

        return true;

    }
    function trim( texto ) {

        return texto.replace(/^\s*|\s*$/g, "");

    }

    </script>
    <form name="form1" action="validation.php" method="post" onsubmit="return validation(this)"> 
       Firstname:<input type="text" name="fname"><br/>
       Lastname:<input type="text" name="lname"><br/>
       Nation ID Number:<input type="text" name="idnumber" maxlength="8"><br/>
       Email address: <input type="text" name="email"><br/>
       Address:<input type="text" name="address"><br/>
       Pnone number:<input type="text" name="phonenumber"><br/>
       <input type="reset" name="reset" value="reset">
       <input type="submit" name="submit" value="submit">
    </form>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM