BootStrap Validator使用注意事项(必看篇)


Posted in Javascript onSeptember 28, 2016

如果你使用的前端框架是bootstrap,那么前端验证框架就不必考虑了,bootstrapvalidator是最好的选择,它和bootstrap的结合最完美,不过要注意版本的问题,针对bootstrap2和bootstrap3有不同的版本。

下面是我遇到的两个注意事项,自己做个笔记:

1、为每个要验证的表单元素添加name属性

例如:

<div class="form-group"> 
<input type="text" placeholder="请输入短信验证码" id="smsCaptcha" name="smsCaptcha" class="form-control" 
data-bv-notempty data-bv-notempty-message="验证码不能为空" 
data-bv-regexp="true" data-bv-regexp-regexp="[0-9]{6}" data-bv-regexp-message="验证码格式不正确" > 
</div> <div class="form-group"> 
<input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter email" 
data-bv-notempty data-bv-notempty-message="验证码不能为空" > 
</div>

上面这个例子中,第一个表单元素添加了name属性,第二个表单元素没有name属性,而这两个表单元素都使用了非空验证,最终效果如下:

BootStrap Validator使用注意事项(必看篇)

从结果可以看出,如果要验证一个表单项,则该表单项必须有name属性。否则验证将不起作用。

2、为保持良好的效果,表单元素最好放在div.form-group里面

例如下面这个例子:

<label for="exampleInputEmail1">用户名</label> 
<div class="input-group" > 
<input type="text" class="form-control required" placeholder="用户名" id="username" name="username" data-bv-notempty data-bv-notempty-message="请输入用户名" /> <span class="input-group-addon"> 
<span class="glyphicon glyphicon-user">
</span> 
</span> 
</div>

用户名输入框及其label直接放在了form元素下面,则最终产生的效果如下:

BootStrap Validator使用注意事项(必看篇)

当输入错误时的提示信息位置在整个form表单的下面,样式发生了极大的变化,虽然能达到验证的效果,但是样式却难以令人接受,解决办法就是将需要验证的表单元素放在div.form-group下面:

<div class="form-group"> 
<label for="exampleInputEmail1">用户名</label> 
<div class="input-group" > 
<input type="text" class="form-control required" placeholder="用户名" id="username" name="username" data-bv-notempty data-bv-notempty-message="请输入用户名" /> <span class="input-group-addon"> 
<span class="glyphicon glyphicon-user">
</span> 
</span> 
</div> 
</div>

BootStrap Validator使用注意事项(必看篇)

3、防止表单重复提交问题

在未引入bootstrapvalidator之前,自己写过一段js代码来防止表单提交,当用户点击提交按钮时候,将提交按钮置灰,代码如下:

var form = $('form'); 
var formType = form.attr('class'); 
if(formType != null){ 
//用get和post标识表单类型 
//get用于标识搜索类型的表单 
//post用于标识添加,更新类型的表单 
var get = formType.indexOf('get'); 
var post = formType.indexOf('post'); 
form.submit(function(){ 
if(get != -1){ 
return ; 
} 
if(post != -1){ 
if(!submited){ 
submited = true; 
$("button[type=submit]").prop('disabled',true); 
}else{ 
return false; 
} 
} 
}); 
}

但是引入bootstrapvalidator后却和这段代码冲突,具体表现为,如果验证出错,例如,某个input必填项没有填写时就提交了表单,此时bootstrapvalidator会提示你这个input为必填的,此时提交按钮为disable状态,直到你填入数据后,按钮才为正常可提交状态,问题就在这,即使你填入了正常的数据,按钮也为正常状态,可是表单却无法提交。排查了大半天,问题就在于上段js代码。

其实bootstrapvalidator已经对重复提交做了设计,如果一个表单需要经过bootstrapvalidator验证,点击提交按钮的时候,提交按钮会置灰,直到服务器返回响应。那么,如果一个表单不需要验证呢,比如一个搜索表单,此时可以给表单一个class,如validation-form,在js主函数里面调用$("form.validation-form").bootstrapValidator();将验证器置空即可。

推荐阅读:

以上所述是小编给大家介绍的BootStrap Validator使用注意事项(必看篇),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jquery操作select大全
Apr 25 Javascript
如何在MVC应用程序中使用Jquery
Nov 17 Javascript
JavaScript中的DSL元编程介绍
Mar 15 Javascript
JavaScript 事件对象介绍
Apr 13 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
Jun 08 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
Dec 14 Javascript
Vue项目webpack打包部署到服务器的实例详解
Jul 17 Javascript
微信小程序 页面跳转传值实现代码
Jul 27 Javascript
微信小程序实现验证码获取倒计时效果
Feb 08 Javascript
vue计算属性+vue中class与style绑定(推荐)
Mar 30 Javascript
小程序实现图片移动缩放效果
May 26 Javascript
vue项目,代码提交至码云,iconfont的用法说明
Jul 30 Javascript
使用BootStrapValidator完成前端输入验证
Sep 28 #Javascript
request请求获取参数的实现方法(post和get两种方式)
Sep 27 #Javascript
使用JavaScript获取Request中参数的值方法
Sep 27 #Javascript
详解JavaScript权威指南之对象
Sep 27 #Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
Sep 27 #Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
Sep 27 #Javascript
ReactNative页面跳转实例代码
Sep 27 #Javascript
You might like
php中的比较运算符详解
2013/10/28 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
PHP将字符串首字母大小写转换的实例
2017/01/21 PHP
PHP实现负载均衡下的session共用功能
2018/04/17 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
使用laravel根据用户类型来显示或隐藏字段
2019/10/17 PHP
javascript 动态添加表格行
2006/06/22 Javascript
Ajax 数据请求的简单分析
2011/04/05 Javascript
javascript常见操作汇总
2014/09/03 Javascript
JS通过ajax动态读取xml文件内容的方法
2015/03/24 Javascript
JS中script标签defer和async属性的区别详解
2016/08/12 Javascript
JQuery实现动态操作表格
2017/01/11 Javascript
用户管理的设计_jquery的ajax实现二级联动效果
2017/07/13 jQuery
五步轻松实现zTree的使用
2017/11/01 Javascript
vue里input根据value改变背景色的实例
2018/09/29 Javascript
vue-cli3单页构建大型项目方案
2020/04/07 Javascript
微信小程序实现弹框效果
2020/05/26 Javascript
vue a标签点击实现赋值方式
2020/09/07 Javascript
vue vant中picker组件的使用
2020/11/03 Javascript
[52:02]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第二场 2月26日
2021/03/11 DOTA
python机器学习库scikit-learn:SVR的基本应用
2019/06/26 Python
python实现windows倒计时锁屏功能
2019/07/30 Python
python批量处理文件或文件夹
2020/07/28 Python
Matlab使用Plot函数实现数据动态显示方法总结
2021/02/25 Python
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
销售业务实习自我鉴定
2013/09/23 职场文书
岗位竞聘演讲稿
2014/01/10 职场文书
大学应届毕业生求职信
2014/05/24 职场文书
无房证明范本
2014/09/17 职场文书
云台山导游词
2015/02/03 职场文书
毕业答辩开场白范文
2015/05/27 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书
JavaScript+HTML实现学生信息管理系统
2021/04/20 Javascript
Django显示可视化图表的实践
2021/05/10 Python
pytorch中[..., 0]的用法说明
2021/05/20 Python