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 相关文章推荐
javascript new 需不需要继续使用
Jul 02 Javascript
推荐9款炫酷的基于jquery的页面特效
Dec 07 Javascript
使用js画图之正弦曲线
Jan 12 Javascript
Svg.js实例教程及使用手册详解(一)
May 16 Javascript
JS 对java返回的json格式的数据处理方法
Dec 05 Javascript
简单实现js无缝滚动效果
Feb 05 Javascript
bootstrap实现动态进度条效果
Mar 08 Javascript
JS奇技之利用scroll来监听resize详解
Jun 15 Javascript
vue2组件之select2调用的示例代码
Oct 12 Javascript
Angular实现下拉框模糊查询功能示例
Jan 03 Javascript
vue2.0的虚拟DOM渲染思路分析
Aug 09 Javascript
用POSTMAN发送JSON格式的POST请求示例
Sep 04 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跨站攻击实例分析
2014/10/28 PHP
php从csv文件读取数据并输出到网页的方法
2015/03/14 PHP
PHP中实现crontab代码分享
2015/03/26 PHP
关于jquery动态增减控件的一些想法和小插件
2010/08/01 Javascript
jquery选择器使用详解
2014/04/08 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
2015/02/24 Javascript
详解JavaScript编程中正则表达式的使用
2015/10/25 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
2015/11/18 Javascript
Jquery和JS获取ul中li标签的实现方法
2016/06/02 Javascript
jQuery处理XML文件的几种方法
2016/06/14 Javascript
EasyUI加载完Html内容样式渲染完成后显示
2016/07/25 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
Jquery Easyui选项卡组件Tab使用详解(10)
2016/12/18 Javascript
js判断PC端与移动端跳转
2020/12/24 Javascript
node.js中实现kindEditor图片上传功能的方法教程
2017/04/26 Javascript
jQuery实现checkbox即点即改批量删除及中间遇到的坑
2017/11/11 jQuery
通过实例解析JavaScript常用排序算法
2020/09/02 Javascript
Selenium定位元素操作示例
2018/08/10 Python
python 浅谈serial与stm32通信的编码问题
2019/12/18 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
Python环境使用OpenCV检测人脸实现教程
2020/10/19 Python
表单button的outline在firefox浏览器下的问题
2012/12/24 HTML / CSS
HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图
2015/08/31 HTML / CSS
DJI大疆德国官方商城:大疆无人机
2018/09/01 全球购物
澳大利亚最便宜的网上药房:Chemist Warehouse
2020/01/30 全球购物
几个MySql的面试题
2013/04/22 面试题
教育专业个人求职信
2013/12/02 职场文书
麦当劳辞职信范文
2014/01/18 职场文书
上课说话检讨书大全
2014/01/22 职场文书
安康杯竞赛活动总结
2014/05/05 职场文书
雷锋式好少年事迹材料
2014/08/17 职场文书
八荣八耻演讲稿
2014/09/15 职场文书
查摆剖析材料范文
2014/09/30 职场文书
先进个人申报材料
2014/12/30 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
matplotlib之pyplot模块实现添加子图subplot的使用
2021/04/25 Python