javascript表单验证

表单HTML

<form action="" method="post">
        <fieldset class="login">
            <legend>Login information</legend>
            <label for="userName" class="hover">UserName:</label>
            <input type="text" id="userName" class="required text" /><br />
            <label for="password" class="hover">Password:</label>
            <input type="text" id="password" class="required text" /><br />
        </fieldset>
        <fieldset>
            <legend>Personal Information</legend>
            <label for="name" class="hover">Name:</label>
            <input type="text" id="name" class="required text" /><br />
            <label for="email" class="hover">Email:</label>
            <input type="text" id="email" class="required text email" /><br />
            <label for="date" class="hover">Date:</label>
            <input type="text" id="date" class="required text" /><br />
            <label for="url" class="hover">Website:</label>
            <input type="text" id="url" class="url text" value="http://" /><br />
            <label for="phone" class="hover">Phone:</label>
            <input type="text" id="phone" class="phone text" /><br />
            <label for="age" class="hover">Age:</label>
            <input type="checkbox" id="age" name="age" value="yes" /><br />

            <input type="submit" value="Submit Form" class="submit" />
        </fieldset>
    </form>

表单的CSS样式

        form {
            font-family: Arial;
            font-size: 14px;
            width: 300px;
        }

        fieldset {
            border: 1px solid #ccc;
            margin-bottom: 10px;
        }

            fieldset.login input {
                width: 125px;
            }

        legend {
            font-weight: bold;
            font-size: 1.1em;
        }

        label {
            display: block;
            width: 60px;
            text-align: right;
            float: left;
            padding-right: 10px;
            margin: 5px 0;
        }

        input {
            margin: 5px 0;
        }

            input.text {
                padding: 0 0 0 3px;
                width: 172px;
            }

            input.submit {
                margin: 15px 0 0 70px;
            }

        ul.errors {
            list-style: none;
            background: #ffcece;
            padding: 3px;
            margin: 3px 0 3px 70px;
            font-size: 0.9em;
            width: 165px;
        }

表单JavaScript

        var errMsg = {
            //检查特定字段是否必填
            required: {
                msg: ‘This field is required.‘,
                test: function (obj, load) {
                    return obj.value.length > 0 && obj.value != obj.defaultValue;
                }
            },
            //确保字段内容是正确的email地址
            email: {
                msg: ‘Not a valid email address.‘,
                test: function (obj) {//确保有内容的输入并符合email地址的格式
                    return !obj.value || /^[a-z0-9_+.-]+\@([a-z0-9-]+\.)+[a-z0-9]{2,4}$/i.test(obj.value);
                }
            },
            //确保字段内容是电话号码并将其自动格式化
            phone: {
                msg: ‘Not a valid phone number‘,
                test: function (obj) {
                    var m = /(\d{3}).*(\d{3}).*(\d{4})/.exec(obj.value);
                    if (m) {
                        obj.value = "(" + m[1] + ")" + m[2] + "-" + m[3];
                        return !obj.value || m;
                    }
                }
            },
            //确保字段内容符合MM/DD/YYYY的时间格式
            date: {
                msg: ‘Not a valid date.‘,
                test: function (obj) {
                    return !obj.value || /^\d{2}\/d{2}\/d{2,4}$/.test(obj.value);
                }
            },
            url: {
                msg: ‘Not a valid URL.‘,
                test: function (obj) {
                    return !obj.value || obj.value == ‘http:://‘ ||
                        /^https?:\/\/([a-z0-9-]+\.)+[a-z0-9]{2,4}.*$/.test(obj.value);
                }
            }

        };
        //隐藏当前正在显示的任何错误信息
        function hideErrors(elem) {
            var next = elem.nextSibling;//获取当前字段的下一个元素
            if (next && next.nodeName == ‘UL‘ && next.className == ‘errors‘) {//如果下一个元素是ul并有class为errors
                elem.parentNode.removeChild(next);//删掉它
            }
        }
        //显示表单内特定字段的错误信息
        function showErrors(elem, errors) {
            var next = elem.nextSibling;//获取当前字段的下一个元素
            if (next && (next.nodeName != ‘UL‘ || next.className != ‘errors‘)) {
                next = document.createElement(‘ul‘);
                next.className = ‘errors‘;
                elem.parentNode.insertBefore(next, elem.nextSibling);
            }
            //有一个包含错误的容器引用,我们可以遍历所有的错误信息
            for (var i = 0; i < errors.length; i++) {
                var li = document.createElement(‘li‘);//为每一个错误信息创建新的li包裹器
                li.innerHTML = errors[i];
                next.appendChild(li);//并插入到dom中
            }
        }
        //验证表单所有字段的函数
        //form参数应是一个表单元素的引用
        //load参数应该是一个布尔值  用以判别验证函数在页面加载时执行还是动态执行
        function validateForm(form, load) {
            var valid = true;
            for (var i = 0; i < form.elements.length; i++) {//遍历表单的所有字段的一个数组
                hideErrors(form.elements[i]);//先将所有错误信息隐藏
                if (!validateField(form.elements[i], load)) {
                    valid = false;
                }
            }
            return valid;//如果字段是不正确的内容,则返回false,反之则返回true;
        }
        //验证单个字段的内容
        function validateField(elem, load) {
            var errors = [];
            for (var name in errMsg) {
                var re = new RegExp("(^|\\s)" + name + "(\\s|$)");
                if (re.test(elem.className) && !errMsg[name].test(elem, load)) {//如果没有通过验证,把错误信息增加到列表中
                    errors.push(errMsg[name].msg);
                }
            }
            if (errors.length) {//如果存在错误信息,则显示出来
                showErrors(elem, errors);
            }
            return errors.length > 0;
        }

        function getInputsByName(name) {
            var result = [];//匹配的input元素的数组
            result.numChecked = 0;//追踪被选中元素的数量
            var input = document.getElementsByTagName(‘input‘);
            for (var i = 0; i < input.length; i++) {
                if (input[i].name == name) {//找出所有指定name的字段
                    result.push(input[i]);//保存结果
                    if (input[i].checked) {//记录被选中字段的数量
                        result.numChecked++;
                    }
                }
            }
            return result;//返回匹配的字段集合
        }
        window.onload = function () {
            var form = document.getElementsByTagName(‘form‘)[0];
            form.onsubmit = function () {
                validateForm(form, ‘submit‘);
                return false;
            }
        }
时间: 2024-08-07 17:02:25

javascript表单验证的相关文章

JavaScript表单验证和正则表达式

JavaScript表单验证 分为四类: 1.非空验证 常用于用户名等 2.相等验证 常用于验证两次输入的密码 3.范围验证 常用于年龄等 4.正则验证 用于手机号,邮箱号等 以下是实例: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html

JavaScript表单验证是否为中文

JavaScript表单验证是否为中文,判断一个输入量是否为中文,通过正则表达式实现. // 检查是否为中文 function isChn(str){ var reg = /^[u4E00-u9FA5]+$/; if(!reg.test(str)){m.mlyrx120.com return false; } return true; }

JavaScript表单验证中文大写字母

JavaScript表单验证中文大写字母,判断一个输入量是否为中文或大写的英文字母,通过正则表达式实现. // 检查是否为有效的真实姓名,只能含有中文或大写的英文字母 function isValidTrueName(strName){ var str = Trim(strName); //判断是否为全英文大写或全中文,可以包含空格 var reg = /^[A-Z u4E00-u9FA5]+$/;http://rl.82676666.com if(reg.test(str)){ return

10个强大的Javascript表单验证插件推荐

创建一个JavaScript表单验证插件,可以说是一个繁琐的过程,涉及到初期设计.开发与测试等等环节.实际上一个优秀的程序员不仅是技术高手,也应该是善假于外物的.本文介绍了10个不错的JavaScript表单验证插件,使用它们完全可以节省你的时间!希望你喜欢. 1. validate.js Validate.js是一个非常不错的JavaScript表单验证库,源于CodeIgniter API.该库相当轻巧(不到1KB),不要求任何JavaScript框架,可以在所有主流浏览器中运行(包括IE

JavaScript表单验证年龄

JavaScript表单验证年龄,判断一个输入量是否符合年龄,通过正则表达式实现. //检查年龄 function isAge(str){ var mydate=new Date; var now=mydate.getFullYear(); if (str < now-60 || str > now-18){ return false; } return true; } 去看看你都知道那些?>>颜色代码表大全

JavaScript 表单验证正则表达式大全

JavaScript验证正则表达式大全,搜集最全的JavaScript验证正则表达式,开始查看吧,这里的都是正则表达式的例子 匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:ns*r 评注:可以用来删除空白行 匹配HTML标记的正则表达式:< (S*?)[^>]*>.*?

JavaScript - 表单验证实例

表单验证1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

Javascript表单验证知识

Javascript表单编程: 一.表单元素的查找方式: 1.var oForm=document.getElementById("Form1"); 2.var oForm=document.forms[Form1]//通过name查找: 二.表单字段的共同特点: disabled:该属性用于指示一个表单控件是否可用: form属性:该属性返回包含字段的表单: blur():该方法导致表单字段失去焦点: focus():该方法导致表单字段获得焦点: blur事件:当表单字段失去焦点时,

JavaScript表单验证,输入中文时字符长度为2

获取输入框中的字符长度进行表单验证,当输入英文时字符长度就是1,当输入中文时字符长度为2. 字符数为4~16位, 上图: 一个中文抵两英文. 上代码 1 btn.addEventListener('click',ov,false); 2 3 function ov(){ 4 var inputValue = text.value.trim(); 5 //去掉最前最后的空格 6 if (countLength(inputValue) < 4 || countLength(inputValue) >