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

时间:2021-05-18

最近的项目,用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="准考证号码不正确,仅能包含数字"

最终实现的效果如下:

插件代码如下:

"use strict";(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{background:#C00;color:#FFF;}.popover .popover-content{padding:1px 5px;}.popover.top>.arrow:after{border-top-color:#C00;}.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插件实现校验表单提示功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章