在javascript中进行表单验证

时间:2012-03-16 16:53:38

标签: javascript html

我正在尝试制作表单验证方法。我面临着一些问题:

  1. 提交表单后,字段未正确填写,所有其他输入都将被删除。
  2. 2.焦点()根本不起作用。

    这是html表单:

        <form name ="reg" onsubmit ="return checkValidation(this)">
        <p><label for="name">שם</label><input type="text" name="name" id="name" /> </p>
        <p><label for="e-mail">אימייל</label><input type="text" name="email" id="email" /> </p>
        <p><label for="password">סיסמא</label><input type="password" name="password" id="password" /></p>
        <p><label for="sex">זכר</label><input type="radio" value="male"id="radio" name="radio" /></p>
        <p><label for="sex">נקבה</label><input type="radio" value="female" name="radio" id="radio" /></p>
        <p><label for="checkbox">אופנוע</label><input type="checkbox" name="bike" id="bike" value="Bike" /> </p>
        <p><label for="checkbox">מכונית</label><input type="checkbox" name="car" id="car" value="Car" /> </p>
        <p><label for="favorite">שחקן המועדף עליך</label>
        <select>
        <option value="פרקינס">דורון פרקינס</option>
        <option value="סופוקליס שחורציאניטיס">סופוקליס שחורציאניטיס</option>
        <option value="עומרי כספי">עומרי כספי</option>
        <option value="דייויד בלו">דייויד בלו</option>
        </select></p>       
        <p><label for="text"></label>
        <textarea  > רשום את הודעתך פה! </textarea></p>    
        <p><label for="reset"></label><input type="reset" name="reset" /></p>
        <p class="submit"><input type="submit" value="שלח"/></p>
    </form>
    

    这是javascript代码:

        <script type = "text/javascript">
    
        function checkValidation()
        {
            isValidName();
            isValidEmail();
            isValidPass();
    
        }
        function isValidName()
        {
            var check = false;
            var Allowed = "qwertyuiopasdfghjklzxcvbnm";
            var str = document.reg.name.value.toLowerCase();
            if(str == "")
            {
            alert("Enter your name!");
            reg.name.focus();
            return false;
            }
    
            for(i = 0;i<str.length;i++)
            {
    
                for(k = 0;k<Allowed.length;k++)
                {
                    if(str[i] == Allowed[k])
                    {
                        check = true;
    
                    }
                }
                if(check == false)
                {
                alert("Please enter a valid name");
                reg.name.focus();
                return false;
                }
                check = false;
            }
            return true;
    
        }
        function isValidEmail()
        {
            str = reg.email.value;
            var lastAtPos = str.lastIndexOf('@');
            var lastDotPos = str.lastIndexOf('.');
            if (lastAtPos < lastDotPos && lastAtPos > 0 && str.indexOf("..") == -1 
            && str.indexOf('@@') == -1 && lastDotPos > 2 && (str.length - lastDotPos) > 2)
            {
                return true;
            }
            else
            {
                alert("Please enter a valid email");
                reg.email.focus();
                return false;
            }
        }
        function isValidPass()
        {
            var notAllowed = "./;'[]{}\()-=_|";
            var str = reg.password.value;
            if(str.length > 6)
            {
            alert("The password must be lower than 6 characters");
            reg.password.focus();
            return false;
            }
            for(i = 0;i<str.length;i++)
            {
                for(k = 0;k<notAllowed.length;k++)
                {
                    if(str[i] == notAllowed[k])
                    {
                    alert("You cannot use the following letters: " +notAllowed);
                    reg.password.focus();
                    return false;
                    }
                }
            }
            return true;
        }
    
    </script>
    

    非常感谢帮助者!

2 个答案:

答案 0 :(得分:1)

  1. 函数checkValidation()不返回任何内容:

    <form name ="reg" onsubmit ="return checkValidation(this)">

  2. 您需要检查每个子功能并尽快返回false。

    function checkValidation() {
        var go = isValidName();
        if (go){
            go = isValidEmail();
        }
        if (go){
            go = isValidPass();
        }
        return go;
    }

    2:而不是var Allowed = "qwertyuiopasdfghjklzxcvbnm";,你应该使用正则表达式,并消除以后的昂贵循环。

    3:考虑使用经过测试的表单验证框架,如jQuery Validate

    4:我是第二篇关于需要服务器端验证的@Dan的帖子。

答案 1 :(得分:0)

为了防止表单提交,你的onsubmit处理程序必须返回一个布尔值false。你的任何东西都没有返回,所以浏览器会把它发送到服务器,服务器会发回没有任何值的表单。