BootstrapValidator 表单验证超详细教程

1、 引入js 和css文件 javascript

在有jquery和bootstrap的页面里引入css

  1.   bootstrapValidator.js
  2.   bootstrapValidator.css

连接: https://pan.baidu.com/s/1eGMPFGISB618gYFttGPgaw 密码: 请加我qq(2353806846)获取html

2、 编写html前端

而后创建一个form表单,添加表单控件,若对某一字段想添加验证规则,java

默认须要以<div class=”form-group”></div>包裹(对应错误提示会根据该class值定位),jquery

内部<input class="form-control" />标签必须有name属性值,此值为验证匹配字段。ajax

注:该值不是绝对的,也能够经过js手动指定错误提示位置和验证的输入框(后续会讲解到)。数据库

<form class="form-horizontal">
    <div class="form-group">
        <label class="col-lg-3 control-label">Username</label>
        <div class="col-lg-9">
            <input type="text" class="form-control" name="username" />
        </div>
    </div>
    <div class="form-group">
        <label class="col-lg-3 control-label">Email address</label>
        <div class="col-lg-9">
            <input type="text" class="form-control" name="email" />
        </div>
    </div>
</form>

3、添加验证规则json

一、在html 标签中添加bootstrap

<div class="form-group">
    <label class="col-lg-3 control-label">Username</label>
    <div class="col-lg-5">
        <input type="text" class="form-control" name="username" data-bv-message="The username is not valid" required data-bv-notempty-message="The username is required and cannot be empty" pattern="[a-zA-Z0-9]+" data-bv-regexp-message="The username can only consist of alphabetical, number" />
    </div>
</div>

二、 添加 js 文件

$(function () { $("#form-test").bootstrapValidator({ live: 'disabled',//验证时机,enabled是内容有变化就验证(默认),disabled和submitted是提交再验证 
        excluded: [':disabled', ':hidden', ':not(:visible)'],//排除无需验证的控件,好比被禁用的或者被隐藏的 
        submitButtons: '#btn-test',//指定提交按钮,若是验证失败则变成disabled,但我没试成功,反而加了这句话非submit按钮也会提交到action指定页面 
        message: '通用的验证失败消息',//好像历来没出现过 
        feedbackIcons: {//根据验证结果显示的各类图标 
            valid: 'glyphicon glyphicon-ok', invalid: 'glyphicon glyphicon-remove', validating: 'glyphicon glyphicon-refresh' }, fields: { text: { validators: { notEmpty: {//检测非空,radio也可用 
                        message: '文本框必须输入' }, stringLength: {//检测长度 
                        min: 6, max: 30, message: '长度必须在6-30之间' }, regexp: {//正则验证 
                        regexp: /^[a-zA-Z0-9_\.]+$/, message: '所输入的字符不符要求' }, remote: {//将内容发送至指定页面验证,返回验证结果,好比查询用户名是否存在 
                        url: '指定页面', message: 'The username is not available' }, different: {//与指定文本框比较内容相同 
                        field: '指定文本框name', message: '不能与指定文本框内容相同' }, emailAddress: {//验证email地址 
                        message: '不是正确的email地址' }, identical: {//与指定控件内容比较是否相同,好比两次密码不一致 
                        field: 'confirmPassword',//指定控件name 
                        message: '输入的内容不一致' }, date: {//验证指定的日期格式 
                        format: 'YYYY/MM/DD', message: '日期格式不正确' }, choice: {//check控件选择的数量 
                        min: 2, max: 4, message: '必须选择2-4个选项' } } } } }); $("#btn-test").click(function () {//非submit按钮点击后进行验证,若是是submit则无需此句直接验证 
        $("#form-test").bootstrapValidator('validate');//提交验证 
        if ($("#form-test").data('bootstrapValidator').isValid()) {//获取验证结果,若是成功,执行下面代码 
            alert("yes");//验证成功后的操做,如ajax 
 } }); }); 

4、前端自定义验证规则

一、回调自定义验证

Bootstrapvalidator的前端自定义验证为callback

"rowkey": { message: 'rowkey验证失败', validators: { stringLength:{ max: 1000, message: 'rowkey不能超过1000个字符' }, callback:{ callback : function(value, validator, $field) { if ($('input:radio[name="databaseType"]:checked').val() == "Hbase" && value == ""){ return { valid: false, message: 'rowkey不能为空' } } else{ return true } } } } }

二、拓展插件的validators方法

将项目中经常使用的方法放到了一个单独js中

$(function () { $.fn.bootstrapValidator.validators.checkIdCard = { /** * @param {BootstrapValidator} 表单验证明例对象 * @param {jQuery} $field jQuery 对象 * @param {Object} 表单验证配置项值 * @returns {boolean} */ validate: function (validator, $field, options) { // debugger;
            try { return checkIdCardNo($field.val()); }catch (e){ console.error(e); } return false; } }; }(window.jQuery));

 

三、remote 后端自定义验证

     Bootstrapvalidator的前端自定义验证为remote,在数据库验重时常常会用到 

"tableName": { message: '表名称验证失败', validators: { notEmpty: { message: '表名称不能为空' }, stringLength:{ max: 100, message: '表名称不能超过100个字符' }, remote: { message: '表名重复', url: 'check', data : '',//这里默认会传递该验证字段的值到后端
            delay: 2000 //这里特别要说明,必需要加此属性,不然用户输入一个字就会访问后台一次,会消耗大量的系统资源,
 } } },

后端代码:

//检测新增metaTableName是否重复
 def check(){ def map = new HashMap() def result = service.check(params.name) if(result){ map.put("valid",true) }else{ map.put("valid",false) } render(map as JSON) // 注意后端传到前端的格式必须是带有valid属性的json对象才会被validator识别,
                 // 若是返回任何其余的值,页面验证将获取不到验证结果致使没法验证
}
  1. {"valid":false} //表示不合法,验证不经过  
  2. {"valid":true} //表示合法,验证经过  

 

5、经常使用事件

一、获取validator对象或实例

通常使用校验是直接调用$(form).bootstrapValidator(options)来初始化validator。初始化后有两种方式获取validator对象或实例,能够用来调用其对象的方法,好比调用resetForm来重置表单。有两种方式获取:
1)

// Get plugin instance  
var bootstrapValidator = $(form).data('bootstrapValidator');  
// and then call method  
bootstrapValidator.methodName(parameters)

这种方式获取的是BootstrapValidator的实例,能够直接调用其方法。
2)

$(form).bootstrapValidator(methodName, parameters);

这种方式获取的是表明当前form的jquery对象,调用方式是将方法名和参数分别传入到bootstrapValidator方法中,能够链式调用。

两种方式的使用分别以下:

复制代码
// The first way  
$(form)  
    .data('bootstrapValidator')  
    .updateStatus('birthday', 'NOT_VALIDATED')  
    .validateField('birthday');  
  
// The second one  
$(form)  
    .bootstrapValidator('updateStatus', 'birthday', 'NOT_VALIDATED')  
    .bootstrapValidator('validateField', 'birthday');
复制代码

二、重置某一单一验证字段验证规则

$(formName).data(“bootstrapValidator”).updateStatus("fieldName",  "NOT_VALIDATED",  null );

三、重置表单全部验证规则

$(formName).data("bootstrapValidator").resetForm();

四、手动触发表单验证

//触发所有验证
$(formName).data(“bootstrapValidator”).validate(); //触发指定字段的验证
$(formName).data(“bootstrapValidator”).validateField('fieldName');

五、获取当前表单验证状态

var flag = $(formName).data(“bootstrapValidator”).isValid();

六、根据指定字段名称获取验证对象

// element = jq对象 / null
var element = $(formName).data(“bootstrapValidator”).getFieldElements('fieldName');