jquery插件bootstrapValidator表单验证详解


Posted in Javascript onDecember 15, 2016

Bootstrap Validator是为Bootstrap3设计的一款表单验证jQuery插件,非常适合基于Bootstrap框架的网站。
看作者的github,这款插件已经不再更新了,而推荐使用FormValidation,不过现在还是先介绍一下BootstrapValidator的使用。

准备工作

BootstrapValidator文档地址:http://bv.doc.javake.cn/

下载源码后,将其中的bootstrapValidator.min.css和bootstapValidator.min.js导入项目,并在页面中引入这些组件,如下:

<link rel="stylesheet" type="text/css" href="path/bootstrapValidator.min.css">
<script type="text/javascript" src="path/bootstrapValidator.min.js"></script>

其中path是对应文件导入项目的路径

简单应用

文档中给出调用插件的方法是:

$(document).ready(function() {
 $(formSelector).bootstrapValidator({
 excluded: ...,
 feedbackIcons: ...,
 live: 'enabled',
 message: 'This value is not valid',
 submitButtons: 'button[type="submit"]',
 submitHandler: null,
 trigger: null,
 fields: {
 <fieldName>: {
 enabled: true,
 message: 'This value is not valid',
 container: null,
 selector: null,
 trigger: null,
 // Map the validator name with its options
 validators: {
 ...
 <validatorName>: <validatorOptions>
 ...
 }
 }
 ...
 }
 });
});

下面针对一个简单的表单来进行说明:

<form id="logForm" class="form-horizontal">
 <div class="form-group">
 <label class="col-lg-3 control-label">用户名</label>
 <div class="col-lg-5">
 <input type="text" class="form-control" name="username" />
 </div>
 </div>
 <div class="form-group">
 <label class="col-lg-3 control-label">邮箱</label>
 <div class="col-lg-5">
 <input type="text" class="form-control" name="email" />
 </div>
 </div>
 <div class="form-group">
 <label class="col-lg-3 control-label">密码</label>
 <div class="col-lg-5">
 <input type="password" class="form-control" name="password" />
 </div>
 </div>
 <button type="submit" class="btn btn-md">提交</button>
</form>

对于上面这个表单应用BootstrapValidator非常简单,fieldName 对应表单中每一项的 name 属性,然后BV还内置了很多 validator 供用户选择,详细可参考文档的 validators 部分,可以看到,邮箱格式的验证正是其中之一,不需要用户自己写正则了。

$(document).ready(function() {
 $('#signup-form').bootstrapValidator({
 fields: {
 username: {
 validators: {
 notEmpty: {
 message: '用户名不能为空'
 },
 stringLength: {
 min: 3,
 max: 6,
 message: '用户名只能在3-6个字符之间哦~'
 }
 }
 },
 email: {
 validators: {
 emailAddress: {
 message: '邮箱格式有误'
 }
 }
 },
 password: {
 validators: {
 notEmpty: {
 message: '密码不能为空'
 },
 stringLength: {
 min: 6,
 max: 8,
 message: '密码必须在6-8个字符之间~'
 },
 regexp: {
 regexp: /^[a-zA-Z0-9]+$/,
 message: '密码只能由字母、数字组成~'
 }
 }
 }
 }
 });
});

不符合验证要求时,会显示错误提示的message,并且禁用提交按钮,提示信息的颜色字体等等都可以重写css来设置,效果展示如下:

jquery插件bootstrapValidator表单验证详解

注:图中的注册按钮处于禁用状态

下面再介绍一下fields的 selector,因为表单数据往往是属于某一个注册用户所有,为方便与后台进行数据交互,我们往往按如下的形式设置name,这时候就不能直接利用name属性来进行验证了,而是使用selector来定义fields:

<form class="form-horizontal">
 <div class="form-group">
 <label class="col-lg-3 control-label">用户名</label>
 <div class="col-lg-5">
 <input type="text" id="user" class="form-control" name="login_user.userName" />
 </div>
 </div>
 <div class="form-group">
 <label class="col-lg-3 control-label">密码</label>
 <div class="col-lg-5">
 <input type="password" id="pass" class="form-control" name="login_user.password" />
 </div>
 </div>
 <button type="submit" id="submitBtn" class="btn btn-md">提交</button>
</form>

对应的js代码:

$(document).ready(function() {
 $('#signup-form').bootstrapValidator({
 fields: {
 user: {
 selector: '#user', 
 validators: {
 notEmpty: {
 message: '用户名不能为空'
 },
 stringLength: {
 min: 3,
 max: 6,
 message: '用户名只能在3-6个字符之间哦~'
 }
 }
 },
 pass: {
 selector: '#pass',
 validators: {
 notEmpty: {
 message: '密码不能为空'
 },
 stringLength: {
 min: 6,
 max: 8,
 message: '密码必须在6-8个字符之间~'
 },
 regexp: {
 regexp: /^[a-zA-Z0-9]+$/,
 message: '密码只能由字母、数字组成~'
 }
 }
 }
 }
 });
});

如果你嫌弃这样写代码累赘,可以直接应用相应的HTML属性,详细可参考文档的 settings 部分

jquery插件bootstrapValidator表单验证详解

还想深入学习表单验证的朋友,可以点击专题:jquery表单验证大全 JavaScript表单验证大全

如果大家还想深入学习,可以点击这里进行学习,再为大家附3个精彩的专题:

以上只是BootstrapValidator的一个非常简单的应用, 官方文档 很详细,感兴趣的话就继续查阅,来深入了解它的强大功能吧

Javascript 相关文章推荐
改写一个简单的菜单 弹性大小
Dec 02 Javascript
正负小数点后两位浮点数实现原理及代码
Sep 06 Javascript
Jquery中find与each方法用法实例
Feb 04 Javascript
Javascript中的匿名函数与封装介绍
Mar 15 Javascript
jquery实现图片上传之前预览的方法
Jul 11 Javascript
jquery判断复选框是否被选中的方法
Oct 16 Javascript
React.js入门学习第一篇
Mar 30 Javascript
AngularJs Understanding the Controller Component
Sep 02 Javascript
JS拉起或下载app的实现代码
Feb 22 Javascript
详解react-router如何实现按需加载
Jun 15 Javascript
JS中的两种数据类型及实现引用类型的深拷贝的方法
Aug 12 Javascript
Node.js连接Sql Server 2008及数据层封装详解
Aug 27 Javascript
jQuery中的100个技巧汇总
Dec 15 #Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
Dec 14 #Javascript
详解jQuery中的事件
Dec 14 #Javascript
JS实现鼠标移上去显示图片或微信二维码
Dec 14 #Javascript
微信小程序 HTTPS报错整理常见问题及解决方案
Dec 14 #Javascript
node.js报错:Cannot find module 'ejs'的解决办法
Dec 14 #Javascript
原生JS获取元素集合的子元素宽度实例
Dec 14 #Javascript
You might like
UCenter 批量添加用户的php代码
2012/07/17 PHP
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
php实现的IMEI限制的短信验证码发送类
2015/05/05 PHP
PHP简单预防sql注入的方法
2016/09/27 PHP
PDO的安全处理与事物处理方法
2016/10/31 PHP
在laravel中实现事务回滚的方法
2019/10/10 PHP
符合W3C网页标准的iframe标签的使用方法
2007/07/19 Javascript
基于jQuery替换table中的内容并显示进度条的代码
2011/08/02 Javascript
javascript椭圆旋转相册实现代码
2012/01/16 Javascript
JQuery防止退格键网页后退的实现代码
2012/03/23 Javascript
鼠标拖拽移动子窗体的JS实现
2014/02/25 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
2014/06/22 Javascript
jQuery层级选择器用法分析
2015/02/10 Javascript
javascript实现五星评分功能
2015/11/10 Javascript
Node.js静态服务器的实现方法
2018/02/28 Javascript
在Mac下彻底卸载node和npm的方法
2018/05/16 Javascript
jquery ajax加载数据前台渲染方式 不用for遍历的方法
2018/08/09 jQuery
vue项目中跳转到外部链接的实例讲解
2018/09/20 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
解决Vue打包后访问图片/图标不显示的问题
2019/07/25 Javascript
vue实现行列转换的一种方法
2019/08/06 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
vue中音频wavesurfer.js的使用方法
2020/02/20 Vue.js
JavaScript 空间坐标的使用
2020/08/19 Javascript
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
django自定义Field实现一个字段存储以逗号分隔的字符串
2014/04/27 Python
Python网络爬虫神器PyQuery的基本使用教程
2018/02/03 Python
python+pandas生成指定日期和重采样的方法
2018/04/11 Python
Python进阶之@property动态属性的实现
2019/04/01 Python
Python适配器模式代码实现解析
2019/08/02 Python
python json.dumps中文乱码问题解决
2020/04/01 Python
详解torch.Tensor的4种乘法
2020/09/03 Python
教师实习自我鉴定
2013/12/13 职场文书
2014年餐厅服务员工作总结
2014/11/18 职场文书
mybatis3中@SelectProvider传递参数方式
2021/08/04 Java/Android