javascript - 如何在:disabled property in vuetify?内部设置多个条件

标签 javascript validation vue.js file-upload vuetify.js

我正在开发一项允许用户上传文件的功能。我需要在以下情况下禁用“添加文件”按钮

1) 该字段为空

2) 当文件大小超过100MB时

这是按钮:

<v-btn rounded :disabled="!uploadedFiles || fileSizeValidation" @click="confirmFileAdd">Add</v-btn>

这就是数据的内部内容:

    data: () => ({
    uploadedFiles: null,
    fileSizeValidation: [
        files => !files || !files.some(file => file.size > 100000000) || 'File size should be less than 100 MB!'
    ],
}),

使用其中之一

:disabled="!uploadedFiles || fileSizeValidation" or :disabled="!uploadedFiles && fileSizeValidation"

不幸的是不起作用。

||实际上会产生错误:

enter image description here

如何确保该按钮在这两种情况下都被禁用?

最佳答案

您可以使用计算属性。每次 uploadedFiles 更改时都会重新计算此属性。

  computed: {
    fileSizeValidation() {
      return (
        !this.uploadedFiles ||
        this.uploadedFiles.length <= 0 ||
        this.uploadedFiles.some(file => !file.size ||file.size > 100000000)
      );
    }
  }

然后像这样使用它

<v-btn rounded :disabled="!this.uploadedFiles || this.uploadedFiles.length <= 0 || fileSizeValidation @click="confirmFileAdd">Add</v-btn>

示例:

Vue.config.devtools = false;
Vue.config.productionTip = false;

var app = new Vue({
  el: '#app',
  data: {
    numberInput: 10,
    uploadedFiles: []
  },
  methods: {
    test() {
      this.msg = "Hello World !";
    }
  },
  computed: {
    fileSizeValidation() {
      return this.uploadedFiles.some(file => !file.size || file.size > 100000000);
    }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <input type="number" v-model="numberInput" />
  <button @click="uploadedFiles.push({ size : numberInput })">Add</button> {{ uploadedFiles }}
  <button :disabled="!this.uploadedFiles || this.uploadedFiles.length <= 0 || fileSizeValidation">Submit</button>
</div>

https://v2.vuejs.org/v2/guide/computed.html#Computed-Properties

关于javascript - 如何在:disabled property in vuetify?内部设置多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61489193/

相关文章:

javascript - 滚动经过一定数量的像素时位置固定

javascript - 如何在 colspan td 中与 td 的 th 宽度相同

javascript - 通过函数参数更改数组

c# - 如何使用 ASP.NET 反序列化 JavaScript 数组

javascript - 如何以特定顺序进行 v-for 迭代?

javascript - #JSON 到 #Vuex 存储

javascript - ajax 表单提交使用什么返回类型?

c++ - 如何检查 SQL 查询对于使用 ADO 编写是否有效?

php - 显示 jquery 验证错误消息,但正在提交表单

javascript - Vue.js 如何删除组件 v-for 值