使用vee-validate vue进行图像所需的验证

问题描述

我是vueJS的新手。

我想使用vee-validate在图像中添加所需的验证器。

内置的必填验证程序不起作用,因此我创建了一个自定义验证程序, img_required

这是我到目前为止所做的。

.vue html部分

<ValidationProvider rules="image|img_required" bail="false" v-slot="{ errors,validate }">
  <div class="row row-xs mg-t-20 mx-0">
    <label class="col-sm-4 form-control-label">
      <span class="tx-danger">*</span> Image:
    </label>
    <div
      @dragover.prevent
      @change="validate"
      @drop.prevent
      class="file-wrapper col-sm-8 mg-t-10 mg-sm-t-0"
    >
      <div v-if="imgUrl">
        <button @click="imageNull" class="img-close">
          <b-icon icon="x"></b-icon>
        </button>
        <img style="height: 127px" :src="imgUrl" />
      </div>
      <input type="text" hidden v-model="imgUrl" />
      <div v-if="!imgUrl" @drop="handleImage($event,'drop')">
        <input
          type="file"
          class="form-control"
          name="file"
          accept="image/*"
          @change="handleImage($event,'input'); validate()"
        />
        Drop image
      </div>
    </div>
  </div>
  <div v-for="error in errors" :key="error">{{ error }}</div>
</ValidationProvider>

我不能在输入类型文件中使用 v-模型,所以我创建了一个虚拟的隐藏输入字段并在v-中传递了 imgUrl 型号<input type="text" hidden v-model="imgUrl" />

imgUrl 文件拖放输入文件获取图像src。

我添加了一个关闭按钮以使imgUrl变量无效。

<button @click="imageNull" class="img-close">
      <b-icon icon="x"></b-icon>
</button>

我通过了此 imgUrl 以验证扩展方法。

.vue 脚本部分

data() {
    return {
      imgUrl: ""
    }
},methods: {
    handleImage(e,action) {
      var file;
      if (action == "input") file = e.target.files[0];
      else if (action == "drop") file = e.dataTransfer.files[0];
      var reader = new FileReader();
      reader.onload = (e) => {
        this.imgUrl = e.target.result;
      };
      reader.readAsDataURL(file);
    },imageNull() {
      this.imgUrl = "";
    },}

这是 validation.js 文件

extend('img_required',{
    validate(imgUrl) {
        console.log(imgUrl);
        return imgUrl !== "";
    },message() {
        return "Image is required!";
    }
});

在这里,我正在检查 imgUrl 是否为空的 base64 字符串。

当我按下“关闭”按钮时, imgUrl 无效。

这里的问题是当我打印此imgUrl时,它显示 event.target.files

enter image description here

我是vue.js的新手。请告诉我是否做错了事

解决方法

我认为问题在于您的 } ] 函数不正确

尝试一下;

handleImage

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...