美文网首页
Jquery validation

Jquery validation

作者: 七月_JulyFY | 来源:发表于2019-08-22 11:26 被阅读0次

前端表单验证框架

页面引入

<!-- jQuery Validation 1.14.0 -->
<script src="/static/assets/plugins/jquery-validation/js/jquery.validate.js"></script>
<script src="/static/assets/plugins/jquery-validation/js/additional-methods.js"></script>
<script src="/static/assets/plugins/jquery-validation/js/localization/messages_zh.js"></script>

默认校验规则

required:true 必输字段

remote:check.php 使用 ajax 方法调用 check.php 验证输入值

email:true 必须输入正确格式的电子邮件

url:true 必须输入正确格式的网址

date:true 必须输入正确格式的日期

dateISO:true 必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22 只验证格式,不验证有效性

number:true 必须输入合法的数字(负数,小数)

digits:true 必须输入整数

creditcard: 必须输入合法的信用卡号

equalTo:#field,输入值必须和 #field 相同

accept: 输入拥有合法后缀名的字符串(上传文件的后缀)

maxlength:5,输入长度最多是5的字符串(汉字算一个字符)

minlength:10,输入长度最小是10的字符串(汉字算一个字符)

rangelength:[5,10],输入长度必须介于 5 和 10 之间的字符串”)(汉字算一个字符)

range:[5,10],输入值必须介于 5 和 10 之间

max:5,输入值不能大于 5

min:10,输入值不能小于 10

封装后检验器

//函数对象---相当于一个类
var Validate=function () {
    //类中的私有函数
    var handlerInitValidation=function () {
        //添加validate没有的校验功能

        /* 验证手机号 11位   13或15开头
         */
        $.validator.addMethod("mobile", function(value, element) {
            var length = value.length;
            var mobile =  /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/;
            return this.optional(element) || (length == 11 && mobile.test(value));
        }, "手机号码格式错误");
        /*
        * 验证密码 只能为 字母数字 下划线 6-16位
        */
        $.validator.addMethod("pwd", function(value, element) {
            var pwd = /^[a-zA-Z0-9_]{6,16}$/;
            return this.optional(element) || pwd.test(value);
        }, "请输入6-16位字母数字或下划线");
    };
    /**
     * 提取表单验证 通过id确认校验哪张表单  rules 定义不能写在class的规则 如长度
     * @param formId
     */
    var handlerValidate = function (formId,rules) {
    // var result=    此处返回的结果可以用来判断验证是否成功  result.valid()   true 成功 false 失败
        $("#" + formId).validate({
            //自定义验证的name属性值的要求 也可写在前端输入项class内 *前端都必须要有name
            rules:rules,
            //自定义验证失败提示(可不填,有默认的)
            messages:{
                rePwd:{
                    equalTo:"两次密码不一致"
                },
                oldPwd:{
                    required:"输入项不能为空"
                }
            },
            errorElement: 'span',
            errorClass: 'help-block',
            errorPlacement: function (error, element) {
                //element.parent().parent().attr("class", "form-group has-error");
                //找最近的form-group
                $(element).closest('.form-group').addClass('has-error');
                error.insertAfter(element);
            }
        });

    };
    //return返回的是对象 如 init
    return{
        //return里的是公有函数
        init: function () {
            handlerInitValidation();
        },
        /**
         * 表单验证
         * @param formId
         */
        validateForm: function (formId,rules) {
          // return  result
            handlerValidate(formId,rules);
        }
    }

}();

//导入js后自动执行
$(function () {
    Validate.init();
    //要校验的表单id设置为inputForm即可,有需要定义rules的表单时 在相应页面下 再调用这个函数的方法 把rules作为参数
    Validate.validateForm("inputForm")
});

自定义rules举例(校验用户长度等)

Validate.validateForm("inputForm",{
            username: {
                rangelength: [3, 10]   //class里写不了条件
            },
            rePwd:{
                //确认密码与新密码匹配  表单项id()
                equalTo: "#newPwd"
            }
        });
//其他项校验 直接写在表单项的class---如下

Example

<form id="inputForm" role="form" action="/profile/save" method="post">
    <input type="hidden" name="id" value="${sessionScope.user.id}"/>
    <div class="form-group">
        <label class="control-label">用户名</label>
        <input type="text" placeholder="${sessionScope.user.username}" value="${sessionScope.user.username}" name="username" class="form-control required " /> </div>
    <div class="form-group">
        <label class="control-label">邮箱</label>
        <input type="text" placeholder="${sessionScope.user.email}" value="${sessionScope.user.email}"  name="email" class="form-control required email" /> </div>
    <div class="form-group">
        <label class="control-label">手机号</label>
        <input type="text" placeholder="${sessionScope.user.phone}" value="${sessionScope.user.phone}"  name="phone"  class="form-control required mobile" /> </div>
    <div class="margiv-top-10">
        <input type="submit" value="保存" class="btn green"/>
    </div>
</form>

相关文章

网友评论

      本文标题:Jquery validation

      本文链接:https://www.haomeiwen.com/subject/edxnsctx.html