妙用Bootstrap的 popover插件实现校验表单提示功能


Posted in Javascript onAugust 29, 2016

最近的项目,用Bootstrap比较多。浏览Bootstrap文档,发现 popover 插件特别适合做表单校验出错的提示。

因为使的非常频繁,最近把它封住下,做成 jQuery的插件。 通过 本插件,在 html标签中 定义好 data-vaild=”校验正则” data-errmsg=”错误信息即可”。为什么 要把 校验规则 写到 html 标签中呢?因为 我还用它做了 后台 的校验规则(后台没用Node,现在用的ASP,忙完专门再发文写下原理)。

<input class="form-control" id="u_exam_idnumber" name="u_exam_idnumber" placeholder="请输入中考准考证号" data-vaild="^\d{5,20}$" data-errmsg="准考证号码不正确,仅能包含数字"

最终实现的效果如下:

妙用Bootstrap的 popover插件实现校验表单提示功能

插件代码如下:

"use strict";
/*
jQuery+Bootstrap 校验表单 by Miaoqiyuan.cn
原理:http://www.miaoqiyuan.cn/p/jquery-bootstrap-vaild
演示:http://www.miaoqiyuan.cn/products/vaild/index.html
源码:http://www.miaoqiyuan.cn/products/vaild/jQuery.Vaild.js
*/
(function(jQuery){
$.extend({
Vaild : function(_this){
if( !!$(_this).data("vaild") ){
var pattern = new RegExp($(_this).data("vaild"));
if( pattern.test( $(_this).val() ) ){
$(_this).parent().removeClass("has-error").addClass("has-success");
$(_this).popover("destroy");
}else{
$(_this).parent().addClass("has-error").removeClass("has-success");
$(_this).data("toogle", "top").data("placement", "top").data("container", "body").data("content", $(_this).data("errmsg")).popover({"trigger":"manual"}).popover("show");
return false;
}
}else{
$(_this).parent().addClass("has-success");
}
return true;
}
});
$.fn.extend({
Vaild : function(){
$(this).each(function(index, _this){
$(_this).submit(function(){
var checkResult = true;
for(var i = 0 ; i < _this.length; i++ ){
checkResult = $.Vaild(_this[i]) && checkResult;
}
return checkResult;
});
for(var i = 0 ; i < _this.length; i++ ){
$(_this[i]).blur(function(){
$.Vaild(this);
});
}
});
}
});
})(jQuery);

调用的时候非常简单,直接使用以下代码:

<script>
$("form").Vaild();
</script>

当表单失去焦点时,如果不合法,会直接提示错误。点击提交时,如果有表单项目不合法,会阻止表单继续提交。

popoover默认的背景是 白色的,不能起到 警示作用,而且 padding 设置过大,太占用空间了。 最后调整下CSS,就实现了 截图的效果。

/*重构 popover */
.popover{background:#C00;color:#FFF;}
.popover .popover-content{padding:1px 5px;}
.popover.top>.arrow:after{border-top-color:#C00;}
/*重构 bootstrap 默认错误提示 */
.has-error input,
.has-error textarea,
.has-error select{background-color:#F2DEDE;}
.has-success input,
.has-success textarea,
.has-success select{background-color:#DFF0D8}

以上所述是小编给大家介绍的Bootstrap的 popover插件实现校验表单提示功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Add Formatted Data to a Spreadsheet
Jun 12 Javascript
jQuery解决iframe高度自适应代码
Dec 20 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
Jun 13 Javascript
纯js模拟div层弹性运动的方法
Jul 27 Javascript
vue.js 表格分页ajax 异步加载数据
Oct 18 Javascript
JS简单生成随机数(随机密码)的方法
May 11 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
Dec 01 Javascript
关于Vue单页面骨架屏实践记录
Dec 13 Javascript
Vue自定义过滤器格式化数字三位加一逗号实现代码
Mar 23 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
Aug 27 Javascript
vue设置默认首页的操作
Aug 12 Javascript
浅谈JSON5解决了JSON的两大痛点
Dec 14 Javascript
深入理解React中es6创建组件this的方法
Aug 29 #Javascript
Ionic默认的Tabs模板使用实例
Aug 29 #Javascript
关于Javascript回调函数的一个妙用
Aug 29 #Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
Aug 28 #Javascript
利用jQuery的动画函数animate实现豌豆发射效果
Aug 28 #Javascript
教你如何在Node.js中使用jQuery
Aug 28 #Javascript
分享JavaScript监听全部Ajax请求事件的方法
Aug 28 #Javascript
You might like
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
PHP上传文件参考配置大文件上传
2015/12/16 PHP
php连接oracle数据库的方法(测试成功)
2016/05/26 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
2016/05/28 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
PHP autoload使用方法及步骤详解
2020/09/05 PHP
Alliance vs AM BO3 第一场2.13
2021/03/10 DOTA
通过event对象的fromElement属性解决热区设置主实体的一个bug
2008/12/22 Javascript
flash遮住div问题的正确解决方法
2014/02/27 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
2015/09/06 Javascript
JS判断是否长按某一键的方法
2016/03/02 Javascript
react中使用swiper的具体方法
2018/05/15 Javascript
vscode下vue项目中eslint的使用方法
2019/01/13 Javascript
深入学习Vue nextTick的用法及原理
2019/10/08 Javascript
JS数组方法slice()用法实例分析
2020/01/18 Javascript
[01:11:28]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第一场 1月8日
2021/03/11 DOTA
python正则表达式之作业计算器
2016/03/18 Python
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
Python中最大最小赋值小技巧(分享)
2017/12/23 Python
5个很好的Python面试题问题答案及分析
2018/01/19 Python
使用django-crontab实现定时任务的示例
2018/02/26 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
css3设置box-pack和box-align让div里面的元素垂直居中
2014/09/01 HTML / CSS
浅析移动设备HTML5页面布局
2015/12/01 HTML / CSS
Nike瑞典官方网站:Nike.com (SE)
2018/11/26 全球购物
西班牙家用电器和电子产品购物网站:Mi Electro
2019/02/25 全球购物
什么是聚集索引和非聚集索引
2012/01/17 面试题
采购文员岗位职责
2013/11/20 职场文书
业绩考核岗位职责
2014/02/01 职场文书
函授生自我鉴定
2014/03/25 职场文书
党员检讨书范文
2014/12/27 职场文书
导游词之白茶谷九龙峡
2019/10/23 职场文书
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers