vue结合bootstrap表单验证 FormValidation 图片验证

26 篇文章 0 订阅
10 篇文章 0 订阅

效果图:
这里写图片描述

vue组件

var setFirmLogoVue=Vue.extend({

    template: `
    <div style="height:800px;width:80%" class="text-center">
        <img :src="picUrl" alt="..." class="img-circle " style="width: 169px;height: 169px" ref='img0'>
        <p style="color:#777;margin-bottom: 30px">头像预览</p>
        <h4 style="margin-bottom: 20px">自定义头像: 选择本地照片,上传编辑自己头像</h4>
        <form id="fileForm2" enctype="multipart/form-data" class="form-horizontal row" style="margin 0 auto;">
        <div class="form-group">
            <div  class="col-md-4 col-md-offset-4 "  >
                <input  type="file"  name="file"  @change="handleFileChange" class="form-control">
            </div>
        </div>
        </form>
            <div style="color:#777;width:400px;margin: 20px auto 50px;">
                <p>
                格式: jpg、png格式
            </p>

                <p>
            大小:不超过100KB
            </p>
            </div>
        <button class="btn btn-primary" @click="uploadFirmLogo">上传头像</button>
    </div>
    `
    ,components:{

    }
    ,
    data(){
        return{
            picUrl:getCookie("firmLogo")||"/img/head.png"
        }
    },
    mounted:function(){
        var fields={};
        var ss={
            validators: {
                notEmpty: {
                    message: '请选择图片'
                },
                file: {
                    extension: 'jpeg,jpg,png',
                    type: 'image/jpeg,image/png',
                    maxSize: 10000,
                    message: '所选文件无效'
                }


            }
        }
        fields.file=ss
        formValid("fileForm2",fields)
//        $('#fileForm2').formValidation('addField', 'file', ss)//必填

    },
    methods:{

        //选择改变图片
        handleFileChange(e){
            var vm=this;
            let file = e.target.files[0];

            let supportedTypes = ['image/jpg', 'image/jpeg', 'image/png'];
            if(supportedTypes.indexOf(file.type)<0){
                layer.msg('文件格式只支持:jpg、jpeg 和 png');
                return
            }
            if(file.size>10000){
                layer.msg("大小不得超过100KB")
                return;
            }
            if (file) {
//                  this.queryFirmInfo["idPicUrl"]=URL.createObjectURL(file);
                baseFileAjax(new FormData($( "#fileForm2" )[0]),function(result){
                    if(result.ret==0){
//                          alert(result.url);
                        vm.picUrl=result.url;

                    }else{
                        layer.msg("修改图片失败!")
                    }
                })
            }
        },

        //上传地址
        uploadFirmLogo(){
            layerAjax("uploadFirmLogo",{imgFile:this.picUrl},function(result){
                $.cookie("firmLogo",this.picUrl);
            },true)
        },

formValidation的例子:
以下格式允许上传尺寸小于2 MB的JPEG,PNG图像。
编程代码

<form id="fileForm" class="form-horizontal" enctype="multipart/form-data">
    <div class="form-group">
        <label class="col-xs-3 control-label">Avatar</label>
        <div class="col-xs-6">
            <input type="file" class="form-control" name="avatar" />
        </div>
    </div>
</form>

<script>
$(document).ready(function() {
    $('#fileForm').formValidation({
        framework: 'bootstrap',
        icon: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        fields: {
            avatar: {
                validators: {
                    notEmpty: {
                        message: 'Please select an image'
                    },
                    file: {
                        extension: 'jpeg,jpg,png',
                        type: 'image/jpeg,image/png',
                        maxSize: 2097152,   // 2048 * 1024
                        message: 'The selected file is not valid'
                    }
                }
            }
        }
    });
});
</script>

声明代码

<form id="fileForm" class="form-horizontal" enctype="multipart/form-data"
    data-fv-framework="bootstrap"
    data-fv-icon-valid="glyphicon glyphicon-ok"
    data-fv-icon-invalid="glyphicon glyphicon-remove"
    data-fv-icon-validating="glyphicon glyphicon-refresh">

    <div class="form-group">
        <label class="col-xs-3 control-label">Avatar</label>
        <div class="col-xs-6">
            <input type="file" class="form-control" name="avatar"
                data-fv-notempty="true"
                data-fv-notempty-message="Please select an image"

                data-fv-file="true"
                data-fv-file-extension="jpeg,jpg,png"
                data-fv-file-type="image/jpeg,image/png"
                data-fv-file-maxsize="2097152"
                data-fv-file-message="The selected file is not valid" />
        </div>
    </div>
</form>

<script>
$(document).ready(function() {
    $('#fileForm').formValidation();
});
</script>

formValidation官网:http://formvalidation.io/validators/file/#mime-types

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 2 中,通常使用第三方库来实现表单验证,比如 VeeValidate、vee-validate、vue-validator 等。 其中,VeeValidate 是一个轻量级的表单验证库,支持异步验证,自定义验证规则等功能。它提供了一个名为 ValidationProvider 的组件,用于输入框的验证,以及 ValidationObserver 组件,用于整个表单的验证。 以下是一个使用 VeeValidate 实现表单验证的示例: 1. 安装 VeeValidate: ``` npm install vee-validate --save ``` 2. 在 main.js 中引入和使用 VeeValidate: ```javascript import Vue from 'vue'; import VeeValidate from 'vee-validate'; Vue.use(VeeValidate); ``` 3. 在组件中使用 ValidationProvider 和 ValidationObserver 组件: ```html <template> <ValidationObserver ref="form"> <div> <ValidationProvider name="email" rules="required|email|unique:users,email" v-slot="{ errors }" > <input type="email" v-model="email" /> <span>{{ errors[0] }}</span> </ValidationProvider> </div> <div> <ValidationProvider name="password" rules="required|min:6|max:16" v-slot="{ errors }" > <input type="password" v-model="password" /> <span>{{ errors[0] }}</span> </ValidationProvider> </div> <button @click="submitForm">Submit</button> </ValidationObserver> </template> <script> export default { data() { return { email: '', password: '', }; }, methods: { async submitForm() { const isValid = await this.$refs.form.validate(); if (isValid) { // 表单验证通过,提交数据 } }, }, }; </script> ``` 以上代码中,ValidationProvider 组件用于对输入框进行验证,name 属性指定要验证的字段名称,rules 属性指定验证规则,v-slot 用于显示错误信息。 ValidationObserver 组件用于整个表单的验证,ref 属性指定表单的引用名称。 submitForm 方法用于提交表单数据,使用 $refs 获取到 ValidationObserver 组件的引用,调用 validate 方法进行表单验证,如果验证通过,提交表单数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值