首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用vee验证图像所需的验证--验证vue

使用vee验证图像所需的验证--验证vue
EN

Stack Overflow用户
提问于 2020-09-01 09:41:19
回答 1查看 2.6K关注 0票数 1

我是vueJS的新手。

我希望使用vee-validate在映像中添加所需的验证器。

内置的必要验证程序无法工作,所以我创建了一个自定义验证器img_required

这是我迄今为止所做的。

.vue html部件

代码语言:javascript
复制
<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-model ,所以我创建了一个虚拟隐藏输入字段,并在v-model <input type="text" hidden v-model="imgUrl" />中传递了imgUrl

imgUrl文件删除输入文件获取图像src。

我添加了一个关闭按钮来对imgUrl变量进行空化。

代码语言:javascript
复制
<button @click="imageNull" class="img-close">
      <b-icon icon="x"></b-icon>
</button>

我将这个imgUrl传递给验证扩展方法。

.vue脚本部分

代码语言:javascript
复制
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文件

代码语言:javascript
复制
extend('img_required', {
    validate(imgUrl) {
        console.log(imgUrl);
        return imgUrl !== "";
    },
    message() {
        return "Image is required!";
    }
});

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

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

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

我是vue.js的新手。如果我做错了什么,请告诉我

EN

回答 1

Stack Overflow用户

发布于 2020-09-01 14:08:41

我认为问题是你的handleImage函数不正确

试试这个;

代码语言:javascript
复制
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => {
  this.imgUrl = reader.result;
}; 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63685166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档