【发布时间】:2020-03-19 13:14:45
【问题描述】:
我正在为我的表单使用 jQuery Validate。所有验证规则都运行良好,但文件验证存在一些问题。
我有 3 个文件输入,其中 2 个是必需的,1 个不是。如果我上传所有 3 个文件,则规则可以正常工作。但是,如果我没有在第三个输入(nic)中上传文件,那么它会给我一个文件大小错误并且没有验证运行。
$(document).ready(function() {
$.validator.addMethod('filesize', function(value, element, arg) {
if (element.files[0].size <= arg) {
return true;
} else {
return false;
}
}
$("#Cnd_reg_form").validate({
rules: {
passport: {
required: true,
extension: "docx|jpeg|png|doc|pdf",
filesize: 4000000
},
license: {
required: true,
extension: "docx|jpeg|png|doc|pdf",
filesize: 2000000
},
nic: {
required: false,
extension: "docx|jpeg|png|doc|pdf",
filesize: 2000000
}
},
messages: {
passport: {
required: "Please upload your passport",
extension: "Please upload file with extension doc,pdf,jpeg,png",
filesize: "Please select file under 4MB"
},
license: {
required: "Please upload your license",
extension: "Please upload file with extension doc,pdf,jpeg,png",
filesize: "Please select file under 2MB"
},
nic: {
extension: "Please upload file with extension doc,pdf,jpeg,png",
filesize: "Please select file under 2MB"
}
},
errorPlacement: function(error, element) {
error.appendTo(element.parent());
}
});
})
});
【问题讨论】:
-
addMethod()调用缺少结束),尽管我认为这只是问题中的一个错字,因为代码在这种状态下根本不起作用。 -
检查“文件大小”验证是否被触发,我怀疑它是否被触发。在 addMethod() 中进行空检查。文件不会得到 element.files[0] 代码。因此可能返回 false。