Bootstrap 与 Jquery validate 结合使用——多个规则实现

进行开发的时候,遇到了需要有多个规则来校验,如新用户过来一套校验规则,老用户过来又是一套规则,这时候就要需要定义多套校验规则。

首先要熟悉Bootstrap和Jquery validate的使用,详情请参考Bootstrap 与 Jquery validate 结合使用——简单实现

然后开始进入正题。

基本的东西不变,只需要给form表单绑定不同的规则,自己定义几套规则即可。

(本人亲自尝试了多种方法,发现Jquery validate的校验规则只能在$(function(){})即网页加载完毕后才能绑定校验规则,不能动态的去更改绑定。即通过一个触发事件重新绑定新的校验规则)

给每个form表单绑定校验规则,根据业务显示对应的form表单即可

/* 表单数据校验 start */
    //设置默认值
    $.validator.setDefaults({
        errorElement : ‘span‘,
        errorClass : ‘help-block‘,
        debug: false, //调试模式取消submit的默认提交功能
        focusInvalid: false, //当为false时,验证无效时,没有焦点响应
        submitHandler: function(form){//表单提交句柄,为一回调函数,带一个参数:form
            var datas = stitchParameter();
            if(paycount == 90){
                $(form).ajaxSubmit({
                    type : "POST",
                    dataType : "json",
                    async : false,
                    data : {"encrypt" : SecUtil.encrypt(datas,_keyPair)},
                    url : HOSTPATH+"/pay/unionPay",
                    success:function( jsondata ){
                        if( jsondata.meta.code == ‘S002‘ ){
                            //数据处理
                            $(".tab-pane").removeClass("in").removeClass("active");
                            $("#pay-successful").addClass("in").addClass("active");
                        }else{
                            alert(jsondata.meta.message);
                            //数据处理
                            $(".tab-pane").removeClass("in").removeClass("active");
                            $("#pay-failure").addClass("in").addClass("active");
                        }
                    }
                });
                //开始计时
                var paytimer = setInterval(function(){
                    paycount--;
                    if(paycount == 0){
                        clearInterval(paytimer);
                        paycount = 90;
                    }else{
                        if(payflag==1){
                            clearInterval(paytimer);
                        }
                    }
                },1000);
            }else{

            }
        },   

          //自定义错误消息放到哪里
        errorPlacement : function(error, element) {
            //区分普通输入框和输入框组,如果直接用element.next().remove();会错误删除标签(即输入框组的<span class="input-group-addon"></span>)
            element.nextUntil(".input-group-addon").remove();
            //element.next().remove();//删除显示图标
            element.after(‘<span class="glyphicon glyphicon-remove form-control-feedback" aria-hidden="true"></span>‘);
            element.closest(‘.form-group‘).append(error);//显示错误消息提示
        },
        //给未通过验证的元素进行处理
        highlight : function(element) {
            $(element).closest(‘.form-group‘).addClass(‘has-error has-feedback‘);
        },
        //验证通过的处理
        success : function(label) {
            var el=label.closest(‘.form-group‘).find("input");
              //区分普通输入框和输入框组,如果直接用el.next().remove();会错误删除标签(即输入框组的<span class="input-group-addon"></span>)
            el.nextUntil(".input-group-addon").remove();
            //el.next().remove();//删除显示图标
            el.after(‘<span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>‘);
            label.closest(‘.form-group‘).removeClass(‘has-error‘).addClass("has-feedback has-success");
            label.remove();
        },
    });
    //新数据校验规则
    var newRules={
        rules:{
            new_name:{
                required : true,
                minlength : 2
            },
            new_idCard:{
                required : true,
                isIdCardNo : true

            },
            new_phone:{
                required : true,
                mobile : true
            },
            new_cardNo:{
                required : true,
                FixedLength : 16
            },
            new_cvn:{
                required : true,
                FixedLength : 3,

            },
            new_verifyCode:{
                required : true,
                FixedLength : 4,
                checkVerifyCode : true
            },
            new_expDate:{
                required:true,
                date : true
            }
        },
        messages:{
            new_name:{
                required : "请输入姓名",
                minlength : "请输入正确的姓名"
            },
            new_idCard:{
                required : "请输入身份证号"
            },
            new_phone:{
                required : "请输入手机号码"
            },
            new_cardNo:{
                required :"请输入银行信用卡",
                FixedLength : "请输入正确的银行信用卡"
            },
            new_cvn:{
                required : "请输入CVN",
                FixedLength : "请输入3位的CVN"
            },
            new_verifyCode:{
                required : "请输入验证码",
                FixedLength : "请输入有效的验证码",
            },
            new_expDate:{
                required : "请输入有效日期"
            }
        },
    };
    //旧数据校验规则
    var oldRules={
        rules:{
            old_cvn:{
                required : true,
                FixedLength : 3,

            },
            old_verifyCode:{
                required : true,
                FixedLength : 4,
                checkVerifyCode : true
            }
        },
        messages:{
            old_cvn:{
                required : "请输入CVN",
                FixedLength : "请输入3位的CVN"
            },
            old_verifyCode:{
                required : "请输入验证码",
                FixedLength : "请输入有效的验证码",
            }
        },
    };
    //生成校验规则
    var validate_new = jQuery.extend({}, $.validator.defaults, newRules);
    var validate_old = jQuery.extend({}, $.validator.defaults, oldRules);
    //表单绑定校验#userPay-old
    $("#userPay-new").validate(validate_new);
    $("#userPay-old").validate(validate_old);
    /* 表单数据校验 end */

对应的页面文件

<!-- 新数据表单 -->
<form id="userPay-new">
    <table>
        <tr>
            <td>
                <div class="form-group">
                    <label for="dtp_input3" class="label-title control-label">姓名:</label>
                    <div class="input-group input-div">
                        <input id="new_name" name="new_name" class="form-control readonly-input" size="16" type="text" value="">
                    </div>
                </div>
            </td>
            <td class="float-td">
                <div class="form-group">
                    <label for="dtp_input3" class="label-title control-label">身份证:</label>
                    <div class="input-group input-div">
                        <input id="new_idCard" name="new_idCard" class="form-control readonly-input" size="16" type="text" value="">
                    </div>
                </div>
            </td>
        </tr>
        <tr>
            <td>
                <div class="form-group">
                    <label for="dtp_input3" class="label-title control-label">手机:</label>
                    <div class="input-group input-div">
                        <input id="new_phone" name="new_phone" class="form-control readonly-input" size="16" type="text" value="">
                    </div>
                </div>
            </td>
        </tr>
        <tr>
            <td>
                <div class="form-group bank-card-div">
                    <label for="dtp_input3" class="label-title control-label">银行卡:</label>
                    <div class="input-group date input-div">
                        <span class="caret"></span>
                        <input id="new_cardNo" name="new_cardNo" class="form-control dropdown-toggle" data-toggle="dropdown" size="16" type="text" value=""/>
                        <!-- <span class="input-group-addon" data-toggle="dropdown">
                            <span class="glyphicon     glyphicon glyphicon-arrow-down"></span>
                        </span> -->
                         <span class="input-group-addon addCard">
                            <span class="glyphicon glyphicon glyphicon-plus"></span>
                        </span>
                        <ul class="userCards dropdown-menu">
                            <!-- <li role="presentation"><span>信用卡(7757)</span><a href="#">删除</a></li>
                            <li role="presentation" class="divider"></li>
                            <li role="presentation"><span onclick="javascript: selectCard(this);">信用卡(7757)</span><a href="#" onclick= "return ">删除</a></li>
                            <li role="presentation" class="divider"></li>
                            <li role="presentation"><span onclick="javascript: selectCard(this);">信用卡(7757)</span><a href="#" onclick= "return ">删除</a></li>
                            <li role="presentation" class="divider"></li>
                            <li role="presentation"><span onclick="javascript: selectCard(this);">信用卡(7757)</span><a href="#" onclick= "return ">删除</a></li> -->
                        </ul>
                    </div>
                </div>
            </td>
            <td class="float-td">
                <div class="form-group">
                    <label for="dtp_input3" class="label-title control-label">CVN:</label>
                    <div class="input-group input-div">
                        <input id="new_cvn" name="new_cvn" class="form-control" size="3" type="text" value="">
                    </div>
                </div>
            </td>
        </tr>
        <tr>
            <td>
                <div class="form-group verify-code-div">
                    <label for="dtp_input3" class="label-title control-label">验证码:</label>
                    <div class="input-group input-div">
                        <input id="new_verifyCode" name="new_verifyCode" class="form-control" data-toggle="dropdown" size="16" type="text" value="">
                        <span class="input-group-addon verify-code-span"><a class="btn btn-primary verify-code-a">获取验证码</a></span>
                    </div>
                </div>
            </td>
            <td class="float-td">
                <div class="form-group exp-date-div">
                    <label for="dtp_input2" class="label-title control-label">有效期:</label>
                    <div class="datepicker input-group date form_date input-div">
                        <input id="new_expDate" name="new_expDate" class="form-control" data-toggle="dropdown" size="16" type="text" value="" readonly>
                        <span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
                    </div>
                </div>
            </td>
        </tr>
    </table>
    <input id="submit-btn-inner" class="btn btn-primary submit-button" data-loading-text="正在提交" type="submit" value="确认支付"/>
</form>
<!-- 旧数据表单 -->
<form id="userPay-old" style="display: none;">
    <table>
        <tr>
            <td>
                <div class="form-group">
                    <label for="dtp_input3" class="label-title control-label">姓名:</label>
                    <div class="input-group input-div">
                        <input id="old_name" name="old_name" class="form-control readonly-input" size="16" type="text" value="">
                    </div>
                </div>
            </td>
            <td class="float-td">
                <div class="form-group">
                    <label for="dtp_input3" class="label-title control-label">身份证:</label>
                    <div class="input-group input-div">
                        <input id="old_idCard" name="old_idCard" class="form-control readonly-input" size="16" type="text" value="">
                    </div>
                </div>
            </td>
        </tr>
        <tr>
            <td>
                <div class="form-group">
                    <label for="dtp_input3" class="label-title control-label">手机:</label>
                    <div class="input-group input-div">
                        <input id="old_phone" name="old_phone" class="form-control readonly-input" size="16" type="text" value="">
                    </div>
                </div>
            </td>
        </tr>
        <tr>
            <td>
                <div class="form-group bank-card-div">
                    <label for="dtp_input3" class="label-title control-label">银行卡:</label>
                    <div class="input-group date input-div">
                        <span class="caret"></span>
                        <input id="old_cardNo" name="old_cardNo" class="form-control dropdown-toggle readonly-input" data-toggle="dropdown" size="16" type="text" value="" readonly/>
                       <!--  <span class="input-group-addon" data-toggle="dropdown">
                            <span class="glyphicon     glyphicon glyphicon-arrow-down"></span>
                        </span> -->
                         <span class="input-group-addon addCard">
                            <span class="glyphicon glyphicon glyphicon-plus"></span>
                        </span>
                        <ul class="userCards dropdown-menu" aria-labelledby="old_cardNo">
                            <!-- <li role="presentation"><span>信用卡(7757)</span><a href="#">删除</a></li>
                            <li role="presentation" class="divider"></li>
                            <li role="presentation"><span onclick="javascript: selectCard(this);">信用卡(7757)</span><a href="#" onclick= "return ">删除</a></li>
                            <li role="presentation" class="divider"></li>
                            <li role="presentation"><span onclick="javascript: selectCard(this);">信用卡(7757)</span><a href="#" onclick= "return ">删除</a></li>
                            <li role="presentation" class="divider"></li>
                            <li role="presentation"><span onclick="javascript: selectCard(this);">信用卡(7757)</span><a href="#" onclick= "return ">删除</a></li> -->
                        </ul>
                    </div>
                </div>
            </td>
            <td class="float-td">
                <div class="form-group">
                    <label for="dtp_input3" class="label-title control-label">CVN:</label>
                    <div class="input-group input-div">
                        <input id="old_cvn" name="old_cvn" class="form-control" size="3" type="text" value="">
                    </div>
                </div>
            </td>
        </tr>
        <tr>
            <td>
                <div class="form-group verify-code-div">
                    <label for="dtp_input3" class="label-title control-label">验证码:</label>
                    <div class="input-group input-div">
                        <input id="old_verifyCode" name="old_verifyCode" class="form-control" data-toggle="dropdown" size="16" type="text" value="">
                        <span class="input-group-addon verify-code-span"><a class="btn btn-primary verify-code-a">获取验证码</a></span>
                    </div>
                </div>
            </td>
            <td class="float-td">
                <div class="form-group exp-date-div">
                    <label for="dtp_input2" class="label-title control-label">有效期:</label>
                    <div class="datepicker input-group date form_date input-div">
                        <input id="old_expDate" name="old_expDate" class="form-control readonly-input" data-toggle="dropdown" size="16" type="text" value="" >
                        <span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
                    </div>
                </div>
            </td>
        </tr>
    </table>
    <input id="submit-btn-inner" class="btn btn-primary submit-button" data-loading-text="正在提交" type="submit" value="确认支付"/>
</form>

结果可行。

如有更加好的方法,请留言。本来小菜一枚,如有不足之处,请多多指教!

时间: 2024-10-14 04:04:12

Bootstrap 与 Jquery validate 结合使用——多个规则实现的相关文章

jquery.validate 动态增加、删除规则

<form name="form" id="form1"> <table> <tr> <td>类型:</td> <td> <select name="type" id="type"> <option value="">请选择</option> <option value="1"

jquery.validate.js使用之自定义表单验证规则

jquery.validate.js使用之自定义表单验证规则,下面列出了一些常用的验证法规则 jquery.validate.js演示查看 jquery validate强大的jquery表单验证插件 http://www.51xuediannao.com/js/jquery/jquery_validate/ ======================================================== //扩展验证规则 //邮箱 表单验证规则jQuery.validator.

利用jquery.validate以及bootstrap的tooltip开发气泡式的表单校验组件

表单校验是页面开发中非常常见的一类需求,相信每个前端开发人员都有这方面的经验.网上有很多成熟的表单校验框架,虽然按照它们默认的设计,用起来没有多大的问题,但是在实际工作中,表单校验有可能有比较复杂的个性化的需求,使得我们用这些插件的默认机制并不能完成这些功能,所以要根据自己的需要去改造它们(毕竟自己还不到那个写一个完美的校验框架的层次).我用过formValidation这个校验框架,虽然它跟bootstrap配合地很好,但是校验风格太死板,不太满足个性化的场景:后来我找到了jquery.val

jquery.validate[.unobtrusive]和Bootstrap实现tooltip错误提示

类似的文章园子里已有,请看这里,个人感觉稍显复杂,日前也打算写一个简单的给项目用,一些关键点记录于此.最终效果如下: 后端使用Asp.net mvc5,前端框架有:jquery.validate.jquery.validate.unobtrusive.requirejs.Bootstrap,都是当前最/较新版本.jquery.validate就不用说了,目前比较流行的前端校验组件:jquery.validate.unobtrusive基于jquery.validate,是为了配合Asp.net

基于Bootstrap+jQuery.validate Form表单验证实践

项目结构 : github 上源码地址:https://github.com/starzou/front-end-example    点击打开 1.form 表单代码 [html] view plaincopy <!DOCTYPE html> <html> <head> <title>Bootstrap Form Template</title> <meta charset="utf-8" /> <meta

使用JQuery.validate后的bootstrap风格校验提示?

因为项目使用了bootstrap框架,在做form提交时需要进行验证.本来研究了一下午jqBootstrapValidator,可是不好用,最终还是想用JQuery validate. 其实最主要就是showErrors方法,自定义了bootstrap风格的浮动提示框,避免了在自己html中定义一个span或是p,来显示error message. 至于validate的rules,在js中就没有写了,我是在input的class标签中定义的. 此外,还要注意的就是项目后台使用了struts2,

2015/10/19总结:ajax传参、jquery.validate自定义日期校验

以下内容仅来自于日常实践零碎回顾.总结,不保证正确性,欢迎路过的大神指点指点! 1.这几天一直在写jsp前端页面,了解到前端与后端数据交互数据有两种.一种是form 的submit方式提交,这种方法可以在表单里通过声明属性:method = 'post'声明表单提交的方式(要与后台的controller的RequestMethod属性对应),  action = ‘ url’声明表单提交后跳转的页面(好像采用这种方式一般都要跳转页面).另一种方式就是通过ajax提交,ajax提交和响应的数据方式

[源码]Bootstrap、jQuery、HTML5、Spring MVC、Mybatis、Hibernate、安全权限、高性能、高并发

功能特点: 1.适配所有设备(PC.平板.手机等),兼容所有浏览器(Chrome.Firefox.Opera.Safari.IE等),适用所有项目(MIS管理信息系统.OA办公系统.ERP企业资源规划系统.CRM客户关系管理系统.网站.管理后台等). 2.快速开发,敏捷的数据持久层解决方案. 2.1.事务自动处理. 2.2.O/R Mapping基于注解,零配置XML,便于维护,学习成本低. 2.3.接口和实现分离,不需写数据持久层代码,只需写接口,自动生成添加.修改.删除.排序.分页.各种条件

表单验证插件jquery.validate.js学习

一.前言 在做web应用的时候,数据验证是非常重要的,一个不小心就产生bug,而bug多了显得个人开发能力都有问题,这个时候如果能有一个用着得心应手的验证插件,开发效率也会大大的提高.就好像牛魔王告诉孙悟空,你缺少一件兵器,于是他就抢来了棒子,用着那叫一个爽.三首蛟告诉杨戬,你手里缺少一件兵器,于是他把三首蛟变成了三尖两刃枪里,再配合一个忠心而又嗅觉灵敏的狗狗,办起事来真是事半功倍.今天我也学学这款比较流行的表单验证插件,给自己搞一个好使的兵器. 插件官网:https://jqueryvalid