继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

javascript简易表单验证插件

慕莱坞1975833
关注TA
已关注
手记 8
粉丝 90
获赞 468

javascript简易表单验证插件:
图片描述
1、dom结构示例如下:

<div class="frame-form">
    <input data-check="empty" class="text-form" type="email" placeholder="姓名">
    <input data-check="tel" class="text-form" type="text" placeholder="电话">
    <input data-check="email" class="text-form" type="text" placeholder="邮箱">
    <input data-check="empty" class="text-form" type="text" placeholder="公司">
    <a href="#" class="submit">提交</a>
</div>

2、调用方式

<script>
    $(function(){
        var form=new CheckObject("frame-form");
            $(".submit").click(function(){
                form.checkTel().checkEmail().checkEmpty();
            });
    })
</script>

3、主要的js代码:

(function(){
    var CheckObject=function(rang){
        this.rang=$(rang);
    }
    CheckObject.prototype={
        checkEmail:function(){
            //验证邮箱
            var email=this.rang.find("[data-check='email']").val();

            if(!( /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/.test(email))){
                console.log("邮箱错误");
            }
            return this;
        },
        checkTel:function(){
            //验证电话
            var phone=this.rang.find("[data-check='tel']").val();
            if(!(/^1[34578]\d{9}$/.test(phone))){
                console.log("电话号码错误");
            }
            return this;
        },
        checkEmpty:function(){
            //判断为空
            this.rang.find("[data-check='empty']").each(function(){
                var str=$(this).val();
                var placeholder=$(this).attr('placeholder')
                if(str.replace(/(^\s*)|(\s*$)/g, "").length ==0){
                    console.log(placeholder+'不能为空');
                }
            });
            return this;
        }
    }
    window["CheckObject"]=CheckObject;
})();

我们使用匿名的自执行函数限制js的作用范围:

(function(){
})();

然后通过window["CheckObject"]=CheckObject;将验证类挂载到window下以提供实例化对象的接口(因为我们使用匿名的自执行函数限制了作用域,所以必须提供一个访问的接口)
我们在CheckObject.prototype下定义了各种的验证方法,这里用到了一个小窍门:

return this;

这样做的目的是返回当前对象,如此一来我们就可以像jquery一样使用链式调用:

form.checkTel().checkEmail().checkEmpty();

后续的验证方法可以继续在protype中添加,以上就是简易的js表单验证插件,大家可以多提意见。

打开App,阅读手记
13人推荐
发表评论
随时随地看视频慕课网APP

热门评论

我照着你这个写的怎么报错了: Uncaught TypeError: CheckObject is not a constructor

查看全部评论