JavaScript数据验证

btxsgosb  于 2023-02-18  发布在  Java
关注(0)|答案(1)|浏览(95)

请帮助我。验证不起作用:

<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>
qvtsj1bj

qvtsj1bj1#

该代码存在一些问题:

  • 你真的不应该在调用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"是完全有效的电话号码,但它可能无法通过测试。除非您有充分的理由将其作为数字(自动拨号?)处理,否则请将其保留为普通文本字段。
  • 在"身份证"字段中:HTML中没有minlength,只有maxlength
  • 如果value为空,isNaN(idnumber)将返回true。如果length〈8,也是如此。我假设这是一个具有所需长度的必填字段,因此您应该使用:
if (isNaN(idnumber) || idnumber.length != 8)
    {
        alert("Please enter a valid id number");
        return false;
    }
  • 对于所有测试,请考虑修剪值。目前,输入""(仅限空白)将通过您的测试。Javascript没有内置的修剪函数,但可以使用以下命令完成:

功能微调(文本){

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

}
用法如下:

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

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

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

相关问题