Vue vuelidate 不工作文件类型输入
Vue vuelidate not working file type input
我习惯了validate for vue js form validation.(https://vuelidate.js.org/#getting-started)
我的所有场景都很好用。
但它在表单上传文件验证中不起作用。
由于文件类型输入无法设置v-model属性,我在添加v-model属性时出现如下错误
'v-model' directives don't support 'file' input type.
所以那个值没有改变。下面是我的代码示例。
<input type="file" id="input-file-now" class="dropify" multiple accept="image/*"
@change="model.file = eDatas.target.files" v-bind:class="{'is-invalid': $v.model.file.$error}">
<div v-if="$v.model.file.$error" class="invalid-feedback">
Select Image
</div>
data () {
return {
model: {}
}
},
validations: {
model: {
title: { required },
file: {
required: requiredIf(function (nestedModel) {
return !this.model.file || this.model.file.length == 0;
})
}
}
},
我尝试 requiredIf
但这也不起作用。如果你知道这个解决方案。请与我分享。
我弄错了。而requiredIf
是表单文件类型输入验证的解决方案。
我的错误是 model
value init file: []
& requiredIf
condition.
data () {
return {
model: {
file: [] // New changes
}
}
},
validations: {
model: {
title: { required },
file: {
required: requiredIf(function (nestedModel) {
return this.model.file.length == 0; // New changes
})
}
}
}
validate(https://vuelidate.js.org/#getting-started)在vue js中非常有用
这是在我的案例中运行良好的代码...
Vue 模板
<input type="file" :class="{ 'is-invalid': $v.imageFile.$error }"
@change="imageFileChanged($event)" accept="image/png, image/jpeg" />
脚本代码:
export default {
data() {
return {
imageFile: ""
}
},
validations: {
imageFile: {
file_size_validation
}
},
methods: {
imageFileChanged(event) {
var files = event.target.files || event.dataTransfer.files;
if (!files.length) {
return;
}
this.imageFile = files[0];
},
}
}
验证:
const file_size_validation = (value, vm) => {
if (!value) {
return true;
}
let file = value; return (file.size < 2097152);
}
我习惯了validate for vue js form validation.(https://vuelidate.js.org/#getting-started)
我的所有场景都很好用。
但它在表单上传文件验证中不起作用。
由于文件类型输入无法设置v-model属性,我在添加v-model属性时出现如下错误
'v-model' directives don't support 'file' input type.
所以那个值没有改变。下面是我的代码示例。
<input type="file" id="input-file-now" class="dropify" multiple accept="image/*"
@change="model.file = eDatas.target.files" v-bind:class="{'is-invalid': $v.model.file.$error}">
<div v-if="$v.model.file.$error" class="invalid-feedback">
Select Image
</div>
data () {
return {
model: {}
}
},
validations: {
model: {
title: { required },
file: {
required: requiredIf(function (nestedModel) {
return !this.model.file || this.model.file.length == 0;
})
}
}
},
我尝试 requiredIf
但这也不起作用。如果你知道这个解决方案。请与我分享。
我弄错了。而requiredIf
是表单文件类型输入验证的解决方案。
我的错误是 model
value init file: []
& requiredIf
condition.
data () {
return {
model: {
file: [] // New changes
}
}
},
validations: {
model: {
title: { required },
file: {
required: requiredIf(function (nestedModel) {
return this.model.file.length == 0; // New changes
})
}
}
}
validate(https://vuelidate.js.org/#getting-started)在vue js中非常有用
这是在我的案例中运行良好的代码...
Vue 模板
<input type="file" :class="{ 'is-invalid': $v.imageFile.$error }"
@change="imageFileChanged($event)" accept="image/png, image/jpeg" />
脚本代码:
export default {
data() {
return {
imageFile: ""
}
},
validations: {
imageFile: {
file_size_validation
}
},
methods: {
imageFileChanged(event) {
var files = event.target.files || event.dataTransfer.files;
if (!files.length) {
return;
}
this.imageFile = files[0];
},
}
}
验证:
const file_size_validation = (value, vm) => {
if (!value) {
return true;
}
let file = value; return (file.size < 2097152);
}