jQuery Validate 使用记录

validate验证效果.png
1.html表单中用<form>标签将要验证的元素包括起来,在元素上加上name属性
<form id="account_form" action="" class="form-horizontal account-form">
    <div class="form-group col-lg-8">
        <label for="add-user-name" class="col-xs-2 control-label">姓名</label>
        <div class="col-xs-6">
            <input type="text" class="form-control is-valid" id="add-user-name" name="userName" placeholder="请输入用户名称" required>
        </div>
    </div>

    <div class="form-group col-lg-8">
        <label for="add-user-email" class="col-xs-2 control-label">邮箱</label>
        <div class="col-xs-6">
            <input type="email" class="form-control" id="add-user-email" name="userEmail" placeholder="请输入邮箱" required>
        </div>
    </div>

    <div class="form-group col-lg-8">
        <label for="add-user-account" class="col-xs-2 control-label">账号</label>
        <div class="col-xs-6">
            <input type="text" class="form-control" id="add-user-account" name="userAccount" placeholder="请输入账号" required>
        </div>
    </div>

    <div class="form-group col-lg-8">
        <label for="add-user-password" class="col-xs-2 control-label">密码</label>
        <div class="col-xs-6">
            <input type="password" class="form-control" id="add-user-password" name="userPassword" placeholder="请输入密码" required>
        </div>
    </div>

    <div class="form-group col-lg-8">
        <label for="add-user-comfirm-password" class="col-xs-2 control-label">确认密码</label>
        <div class="col-xs-6">
            <input type="password" class="form-control" id="add-user-comfirm-password" name="userPasswordComfirm" placeholder="请再次输入密码">
        </div>
    </div>
</form>
2.js初始化和设置验证规则
var validate = $('.account-form').validate({
    onfocusout: function (element) {
        $(element).valid();
    },
    errorClass: 'help-block',
    rules: {
        userName: "required",
        userAccount: {
            required: true,
            remote: {
                url: "../account/exist",
                type: "post",
                dataType: "json",
                data: {
                    account: function () {
                        return $("#add-user-account").val();
                    }
                }
            }
        },
        userPassword: "required",
        userEmail: {
            required: true,
            email: true
        },
        userPasswordComfirm: {
            required: true,
            equalTo: "#add-user-password"
        }
    },
    messages: {
        userName: "请输入用户名称",
        userAccount: {
            required: "请输入账户",
            remote: "账号已经存在"
        },
        userPassword: "请输入密码",
        userEmail: {
            required: "请输入Email地址",
            email: "请输入正确的email地址"
        },
        userPasswordComfirm: {
            required: "请输入确认密码",
            equalTo: "确认密码与密码不一致"
        }
    }
});
3.常用参数/方法
1.清空form表单中所有元素 
validate.resetForm();
2.验证失败聚集到失败的元素上
validate.focusInvalid();
4.自定义校验方法
// 表单校验
    function formCheck() {
        validate = $('#questionnaire-form').validate({
            // 失焦后校验
            onfocusout: function (element) {
                $(element).valid();
            },
            // 去掉输入值左右的空格
            onkeyup: function (element) {
                var value = this.elementValue(element).trim();
                $(element).val(value);
            },
            // 指定验证失败提示信息的样式类
            errorClass: 'help-block',
            // 验证字段及规则
            rules: {
                'create-time': 'required',
                'questionnaire-name': {
                    required: true,
                    // 使用自定义校验方法
                    checkUnique: ['../questionnaire/name', 'post']
                }
            },
            // 验证字段及验证失败对应的提示信息
            messages: {
                'create-time': "请选择创建时间",
                'questionnaire-name': {
                    required: "请输入问卷名",
                    checkUnique: "问卷名已经存在, 请重新输入"
                }
            }
        });

        // 自定义 请求服务器判重 方法(params是一个参数数组)
        jQuery.validator.addMethod("checkUnique", function(value, element, params) {
            var deferred = $.Deferred();
            if (params) {
                if (value === tempQuestionnaireName) {
                    return true;
                }

                $.ajax({
                    url: params[0],
                    type: 'post',
                    dataType: 'json',
                    async: false,
                    data: {
                        name: value
                    },
                    success: function(data) {
                        if (data) {
                            deferred.resolve();
                        } else {
                            deferred.reject();
                        }
                    },
                    error: function () {
                        console.log("查重时发生错误!");
                    }
                });
            }
            return deferred.state() === "resolved";
        });
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,161评论 1 45
  • 文/最光阴 凄凉独对雨夜,风霜莫问前程,无常笑语葬花凝,空留一丝泣鸣。情深难持不寿,痴念枉顾天乘,命途多舛磨剑锋,...
    最光阴_6a52阅读 2,994评论 0 1
  • 按语:登山则情满于山,观海则意溢于海。 据实而论,以本人的心性和潜质是无法读懂刘彦和的《文心雕龙》的。因此,很多时...
    杏坛耕夫阅读 3,392评论 0 1
  • 怀着激动的心情,终于踏上了去乌镇的高铁。这个让我魂牵梦绕了许久的名字,此刻会不会宛如一个静坐婚房羞答答的新娘,等待...
    冰凌原创诗文阅读 1,573评论 0 3
  • 各位亲爱的读者你们好,我是一位来自四川广元一个小山区一位普通的宝妈,跟大多数人一样过着同样的日子,没有追求,没有目...
    微笑圣姑阅读 5,313评论 15 47