jQ Validate插件进行表单验证

正常form表单验证

1.写入form表单这样写

 <meta name="csrf-token" content="{{csrf_token()}}">
 <form id = "projectForm">
        <input name='title' type="text" class="form-control _input" placeholder="请输入项目标题">
        <textarea name='content' class="form-control _input" rows="4" placeholder="请输入项目简介"></textarea>
        <input   name = "image"/>
        <input  name = "file"/>
</form>

2.在本页面引入jq以及jquery.validate

<script type="text/javascript" src="{{url('/qiniu/js/jquery.js')}}"></script>
<script src="{{asset('admin/js/jquery.validate.min.js')}}"></script>

3.初始化表单验证

刚才写的表单中有几个点是有用的,form的id,用于实例化,input 的name,是验证工具获取需要验证的字段的依据,最后一定要有type = submit,这是提交表单以及验证的触发器。

    !(function ($) {
    "use strict";//使用严格标准
    // 获取表单元素
    var FormValidator = function(){
        this.$projectForm = $("#projectForm");
    };
    // 初始化
    FormValidator.prototype.init = function() {
        this.$projectForm.validate({
            // 验证规则
            rules: {
                title: {
                    required: true
                },
                content: {
                    required: true
                },
                image: {
                    required: true
                },
                file: {
                    required: true
                }
            },
            // 提示信息
            messages: {
                title: {
                    required: '必须要填写标题哦'
                },
                content: {
                    required: '必须要填写项目简介哦'
                },
                image: {
                    required: '必须要上传一张图片哦'
                },
                file: {
                    required: '必须要上传一份项目文件哦'
                }
            },
            ignore:  ' '   //  注意!注意! 加上这句,能给隐藏字段做验证!
        });
    };
    $.FormValidator = new FormValidator;
    $.FormValidator.Constructor = FormValidator;
})(window.jQuery),
        function($){
            "use strict";
            $.FormValidator.init();
        }(window.jQuery);

ajax提交表单验证(兄弟会尹茂林)

1.上面的原则同样适用,只是要多加一些东西。

 !function($) {
    "use strict";
    var FormValidator = function() {
      //实例化验证工具
        this.$projectForm = $("#projectForm");
    };
    FormValidator.prototype.init = function() {
    //比起正常表单,多出了这一步,ajax写到这里面
        $.validator.setDefaults({
            submitHandler: function() {
                $.ajaxSetup({
                    //将laravel的csrftoken加入请求头,所以页面中应该有meta标签,详细写法在上面的form表单部分
                    headers: {
                        'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
                    }
                });
                //与正常form不同,通过下面这样来获取需要验证的字段
                var data = new FormData();
                data.append( "title"      , $('input[name=title]').val());
                data.append( "content"     , $('input[name=content]').val());
                data.append( "image"       , $('input[name=image]').val());
                data.append( "file"     , $('input[name=file]').val());
              //开始正常的ajax
                $.ajax({
                    url:'/project',
                    type:'post',
                    data:{
                        title:$("input[name='title']").val(),
                        content:$("textarea[name='content']").val(),
                        image:$("input[name='image']").val(),
                        file:$("input[name='file']").val(),
                        _token:$("#_token").val()
                    },
                    success:function(data){
                        alert('添加成功');
                    },
                    error:function(){
                        alert('添加失败');
                    }
                })
            }
        });
        // validate signup form on keyup and submit
        this.$projectForm.validate({
            // 验证规则
            rules: {
                title: {
                    required: true
                },
                content: {
                    required: true
                },
                image: {
                    required: true
                },
                file: {
                    required: true
                }
            },
            // 提示信息
            messages: {
                title: {
                    required: '必须要填写标题哦'
                },
                content: {
                    required: '必须要填写项目简介哦'
                },
                image: {
                    required: '必须要上传一张图片哦'
                },
                file: {
                    required: '必须要上传一份项目文件哦'
                }
            },
          ignore: ' '   //  注意!注意! 加上这句,能给隐藏字段做验证!
        });

    },
            //init
            $.FormValidator = new FormValidator,
            $.FormValidator.Constructor = FormValidator
}(window.jQuery),

        function($) {
            "use strict";
            $.FormValidator.init()
        }(window.jQuery);

这样写完之后,点击submit提交的时候如果验证不通过,无论是表单还是ajax,都不会提交请求,而且表单验证默认还有失焦验证。

小demo

  /**
 * 昵称修改
 */

!(function ($) {
    "use strict";
    var FormValidator = function(){
        this.$projectForm = $("#nickname-form");
    };
    FormValidator.prototype.init = function() {
        $.validator.setDefaults({
            submitHandler: function() {
                var data = new FormData();
                var nickname = $('#nickname-form').find('input[name=nickname]').val();
                data.append( "nickname", nickname);
                //开始正常的ajax
                    $.ajax({
                    url:'/api/user/nickname',
                    type:'post',
                    data:{
                        nickname:nickname,
                        _token:$('meta[name=csrf-token]').attr('content')
                    },
                    success:function(data){
                        console.log(data);
                        if (data.ServerNo===200) {
                            // 成功将input默认框改为data.ResultData 并弹出提示框 2秒后隐藏
                            $('#nickname-form').find('.info-alert').removeClass('error-    alert').addClass('success-alert').html('操作成功').show();
                            $('#nickname-    form').find('input[name=nickname]').attr('placeholder',data.ResultData);
                            setTimeout(function(){
                                $('#nickname-form').find('.info-alert').hide();
                            },2000)
                        } else {
                            $('#nickname-form').find('.info-alert').removeClass('success-    alert').addClass('error-alert').html('操作失败').show();
                        }
                    },
                    error:function(){
                        $('#nickname-form').find('.alert-info').removeClass('success-    alert').addClass('error-alert').html('操作失败').show();
                    }
                })
            }
        });
        this.$projectForm.validate({
            // 验证规则
            rules: {
                nickname: {
                    required: true,
                }
            },
            // 提示信息
            messages: {
                nickname: {
                    required: '昵称不能为空哦'
                }
            }
        });
    };
    $.FormValidator = new FormValidator;
    $.FormValidator.Constructor = FormValidator;
})(window.jQuery),
    function($){
        "use strict";
        $.FormValidator.init();
    }(window.jQuery);

自定义验证规则

/**
 * 为jq Validate添加密码格式验证
 */
var pswReg = /^(?![^a-zA-Z]+$)(?!\D+$).{6,}$/;
$.validator.addMethod("mix",function(value,element,params){
    if (pswReg.test(value)) {
        return true
    } else {
        return false;
    }
},"必须6位以上,并包含字母和数字哦");

验证中这样写

password: {
                required: true,
                minlength: 6,
                mix:true
            },
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容