Javascript验证

时间:2011-02-21 00:46:39

标签: javascript-events

请帮帮我。验证无效

1 个答案:

答案 0 :(得分:3)

该代码存在许多问题:

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

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

仅这些变化可以解决您的问题。我会进一步检查代码,看看是否还有别的东西。

修改

我现在已经测试了验证,它确实有效。唯一必需的修改是从scr=validation.js标记中删除<SCRIPT>。正如我所建议的,使用单独的标签。

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

此外,关于验证本身的其他建议:

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

        if (lname=="")
    
  • First Name和Last Name错误消息是相同的。这会让用户感到困惑。

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

  • 在国家ID字段中:HTML中没有minlength。仅maxlength

  • 如果值为空,则
  • isNaN(idnumber)将返回true。并且如果长度<8。我假设它是一个必需的字段,具有所需的长度,所以你应该使用:

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

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