jQuery validation-plugin:validation多个输入文件

我想问一下如何使用jQuery validation-pluginvalidation多个文件输入。

目前我有这些代码,但它不起作用:

html的:

Photo :

.js文件:

 $('#uploadPhotoForm').validate({ rules: { files: { required: true, extension: "png" } }, messages:{ files:{ required : "Please upload atleast 1 photo", extension:"Only png file is allowed!" } } }); 

我还将使用此代码发布到新的PHP进行处理。 但似乎在我的uploadPhoto.php中, $_FILES['files']['tmp_name']未定义。 我可以知道如何解决这个问题吗?

 if ($('#uploadPhotoForm').valid()) { $.ajax({ url: "inc/uploadPhoto.php", type: "POST", data: new FormData(this), contentType: false, cache: false, processData:false, success: function(data){ $("#error1").html(data); } }); } 

您需要'files[]'而不是files ,如果您不添加additional-methods.js ,您将执行此操作。

  $('#uploadPhotoForm').validate({ rules: { 'files[]': { required: true, extension: "png" } }, messages:{ 'files[]':{ required : "Please upload atleast 1 photo", extension:"Only png file is allowed!" } } 

见jsFiddle 。

关于序列化。 请阅读本文如何使用jquery序列化进行文件上传

更新:

它会工作

 if ($('#uploadPhotoForm').valid()) { var form = $('#uploadPhotoForm')[0]; // [0], because you need to use standart javascript object here var formData = new FormData(form); $.ajax({ url: "inc/uploadPhoto.php", type: "POST", data: formData, contentType: false, cache: false, processData:false, success: function(data){ $("#error1").html(data); } }); } 

你认为你的代码不起作用,因为thisdata: new FormData(this),不是有效的javascript表单对象。

对于可能通过google登陆此页面的人。我使用以下解决方案解决了它,因为它不能正常使用不同格式的多个上传。

  

我做了一个自定义validation器方法,因为默认validation器没有正确validation多个文件。如果我选​​择第一个文件为pdf,另一个png。这个例子validationpdf,doc和docx文件。

 $(function() { $.validator.addMethod( "validate_file_type", function(val,elem) { console.log(elem.id); var files = $('#'+elem.id)[0].files; console.log(files); for(var i=0;i