BootstrapValidator超详细教程(推荐)


Posted in Javascript onDecember 07, 2016

一、引入必要文件

下载地址:(https://github.com/nghuuphuoc/bootstrapvalidator/archive/v0.4.5.zip)

<link rel="stylesheet" href="/path/to/bootstrap/css/bootstrap.css"/>
<link rel="stylesheet" href="/path/to/dist/css/bootstrapValidator.min.css"/>
<script type="text/javascript" src="/path/to/jquery/jquery.min.js"></script>
<script type="text/javascript" src="/path/to/bootstrap/js/bootstrap.min.js"></script>
// 带众多常用默认验证规则的
<script type="text/javascript" src="/path/to/dist/js/bootstrapValidator-all.js"></script>
// 不带常用规则,需自定义规则
<script type="text/javascript" src="/path/to/dist/js/bootstrapValidator.min.js"></script>
//此方法是我编写常用的自定义规则的,也可直接写到对应的表单的js中
<script type="text/javascript" src="/path/to/dist/js/validator/atfmCustomValidatorRules.js"></script>

二、编写HTML

在表单中,若对某一字段想添加验证规则,默认需要以<div class=”form-group”></div>包裹(对应错误提示会根据该class值定位),内部<input class="form-control" />标签必须有name属性值,此值为验证匹配字段。

注:该值不是绝对的,也可以通过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>

三、添加验证规则

1、添加到HTML上

<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>

2、添加到js上

注:以下参数上面的赋值都为默认值,不添加该参数即使用默认值

$(formSelector).bootstrapValidator({
/**
* 指定不验证的情况
* 值可设置为以下三种类型:
* 1、String ':disabled, :hidden, :not(:visible)'
* 2、Array 默认值 [':disabled', ':hidden', ':not(:visible)']
* 3、带回调函数 
[':disabled', ':hidden', function($field, validator) {
// $field 当前验证字段dom节点
// validator 验证实例对象 
// 可以再次自定义不要验证的规则
// 必须要return,return true or false; 
return !$field.is(':visible');
}]
*/
excluded: [':disabled', ':hidden', ':not(:visible)'],
/**
* 指定验证后验证字段的提示字体图标。(默认是bootstrap风格)
* Bootstrap 版本 >= 3.1.0
* 也可以使用任何自定义风格,只要引入好相关的字体文件即可
* 默认样式 
.form-horizontal .has-feedback .form-control-feedback {
top: 0;
right: 15px;
}
* 自定义该样式覆盖默认样式
.form-horizontal .has-feedback .form-control-feedback {
top: 0;
right: -15px;
}
.form-horizontal .has-feedback .input-group .form-control-feedback {
top: 0;
right: -30px;
}
*/
feedbackIcons: {
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'
},
/**
* 生效规则(三选一)
* enabled 字段值有变化就触发验证
* disabled,submitted 当点击提交时验证并展示错误信息
*/
live: 'enabled',
/**
* 为每个字段指定通用错误提示语
*/
message: 'This value is not valid',
/**
* 指定提交的按钮,例如:'.submitBtn' '#submitBtn'
* 当表单验证不通过时,该按钮为disabled
*/
submitButtons: 'button[type="submit"]',
/**
* submitHandler: function(validator, form, submitButton) {
* //validator: 表单验证实例对象
* //form jq对象 指定表单对象
* //submitButton jq对象 指定提交按钮的对象
* }
* 在ajax提交表单时很实用
* submitHandler: function(validator, form, submitButton) {
// 实用ajax提交表单
$.post(form.attr('action'), form.serialize(), function(result) {
// .自定义回调逻辑
}, 'json');
}
* 
*/
submitHandler: null,
/**
* 为每个字段设置统一触发验证方式(也可在fields中为每个字段单独定义),默认是live配置的方式,数据改变就改变
* 也可以指定一个或多个(多个空格隔开) 'focus blur keyup'
*/
trigger: null,
/**
* Number类型 为每个字段设置统一的开始验证情况,当输入字符大于等于设置的数值后才实时触发验证
*/
threshold: null,
/**
* 表单域配置
*/
fields: {
//多个重复
<fieldName>: {
//隐藏或显示 该字段的验证
enabled: true,
//错误提示信息
message: 'This value is not valid',
/**
* 定义错误提示位置 值为CSS选择器设置方式
* 例如:'#firstNameMeg' '.lastNameMeg' '[data-stripe="exp-month"]'
*/
container: null,
/**
* 定义验证的节点,CSS选择器设置方式,可不必须是name值。
* 若是id,class, name属性,<fieldName>为该属性值
* 若是其他属性值且有中划线链接,<fieldName>转换为驼峰格式 selector: '[data-stripe="exp-month"]' => expMonth
*/
selector: null,
/**
* 定义触发验证方式(也可在fields中为每个字段单独定义),默认是live配置的方式,数据改变就改变
* 也可以指定一个或多个(多个空格隔开) 'focus blur keyup'
*/
trigger: null,
// 定义每个验证规则
validators: {
//多个重复
//官方默认验证参照 http://bv.doc.javake.cn/validators/
// 注:使用默认前提是引入了bootstrapValidator-all.js
// 若引入bootstrapValidator.js没有提供常用验证规则,需自定义验证规则哦
<validatorName>: <validatorOptions>
}
}
}
});

四、定义自定义验证规则

该规则是拓展插件的validators方法。

我将项目中常用的方法放到了一个单独js中,也就是上面第一步引用的自定义方法。

使用方法如下:

(function($) {
//自定义表单验证规则
$.fn.bootstrapValidator.validators = {
<validatorName> : {
/**
* @param {BootstrapValidator} 表单验证实例对象
* @param {jQuery} $field jQuery 对象
* @param {Object} 表单验证配置项值
* @returns {boolean}
*/
validate: function(validator, $field, options) {
// 表单输入的值
// var value = $field.val();
//options为<validatorOptions>对象,直接.获取需要的值
// 返回true/false
//也可返回{ valid : true/false, message: 'XXXX'}
return reg.test( $field.val() );
}
},
};
}(window.jQuery));

五、常用事件

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

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

2、重置表单所有验证规则

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

3、手动触发表单验证

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

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

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

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

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

六、表单提交

1、当提交按钮是普通按钮

手动触发表单验证

示例:

$("buttonName").on("click", function(){
//获取表单对象
var bootstrapValidator = form.data('bootstrapValidator');
//手动触发验证
bootstrapValidator.validate();
if(bootstrapValidator.isValid()){
//表单提交的方法、比如ajax提交
}
});

2、当提交按钮的[type=”submit”]时

会在success之前自动触发表单验证

var bootstrapValidator = form.data('bootstrapValidator');
bootstrapValidator.on('success.form.bv', function (e) {
e.preventDefault();
//提交逻辑
});

以上所述是小编给大家介绍的BootstrapValidator超详细教程(推荐),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
保证JavaScript和Asp、Php等后端程序间传值编码统一
Apr 17 Javascript
JavaScript实现复制或剪切内容到剪贴板功能的方法
May 23 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
Oct 24 Javascript
Bootstrap fileinput文件上传组件使用详解
Jun 06 Javascript
jQuery实现QQ空间汉字转拼音功能示例
Jul 10 jQuery
JavaScript中Hoisting详解 (变量提升与函数声明提升)
Aug 18 Javascript
JavaScript你不知道的一些数组方法
Aug 18 Javascript
javascript实现数字配对游戏的实例讲解
Dec 14 Javascript
Element-UI Table组件上添加列拖拽效果实现方法
Apr 14 Javascript
详解vue文件中使用echarts.js的两种方式
Oct 18 Javascript
vue权限管理系统的实现代码
Jan 17 Javascript
Vue.js计算机属性computed和methods方法详解
Oct 12 Javascript
利用jquery实现验证输入的是否是数字、小数,包含保留几位小数
Dec 07 #Javascript
利用jquery实现下拉框的禁用与启用
Dec 07 #Javascript
jquery实现文本框的禁用和启用
Dec 07 #Javascript
浅析jQuery操作select控件的取值和设值
Dec 07 #Javascript
简单理解js的prototype属性及使用
Dec 07 #Javascript
Bootstrap基本组件学习笔记之列表组(11)
Dec 07 #Javascript
Bootstrap基本样式学习笔记之图片(6)
Dec 07 #Javascript
You might like
用PHP伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
php获取表单中多个同名input元素的值
2014/03/20 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
理解Angular数据双向绑定
2016/01/10 Javascript
详解AngularJs中$resource和restfu服务端数据交互
2016/09/21 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
2017/04/25 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
JavaScript运行原理分析
2018/02/09 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
基于IView中on-change属性的使用详解
2018/03/15 Javascript
React中嵌套组件与被嵌套组件的通信过程
2018/07/11 Javascript
详解vue中使用微信jssdk
2019/04/19 Javascript
vue-cli3配置与跨域处理方法
2019/08/17 Javascript
JS快速实现简单计算器
2020/04/08 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
js实现带积分弹球小游戏
2020/07/21 Javascript
[14:00]DOTA2国际邀请赛史上最长大战 赛后专访B神
2013/08/10 DOTA
Python输出PowerPoint(ppt)文件中全部文字信息的方法
2015/04/28 Python
OpenCV-Python实现轮廓检测实例分析
2018/01/05 Python
python实现将excel文件转化成CSV格式
2018/03/22 Python
Python实现计算圆周率π的值到任意位的方法示例
2018/05/08 Python
使用Python制作自动推送微信消息提醒的备忘录功能
2018/09/06 Python
Python list运算操作代码实例解析
2020/01/20 Python
Python with语句用法原理详解
2020/07/03 Python
Django实现随机图形验证码的示例
2020/10/15 Python
美国存储和组织商店:The Container Store
2017/08/16 全球购物
美国轻奢时尚购物网站:REVOLVE(支持中文)
2020/07/18 全球购物
技术学校毕业生求职信分享
2013/12/02 职场文书
知名企业招聘广告词大全
2014/03/18 职场文书
师德演讲稿范文
2014/05/06 职场文书
公安机关查摆剖析材料
2014/10/10 职场文书
2015年银行个人工作总结
2015/05/14 职场文书
解决golang在import自己的包报错的问题
2021/04/29 Golang
VS2019连接MySQL数据库的过程及常见问题总结
2021/11/27 MySQL
使用Bandicam录制鼠标指针并附带点击声音,还可以添加点击动画效果
2022/04/11 数码科技