2016-11-21 18 views
0

我已經創建了一個表單,它需要某些輸入字段並允許用戶上傳文件。表格行由用戶動態添加。我用我的表單驗證jQuery驗證插件從輸入傳遞值= jquery submitHandler中的文件

問題是我無法獲取用戶已選擇的文件。但所有其他領域正在通過。

HTML

<form id="upload"> 
<table class="dd" width="100%" id="data"> 

</table> 
<input name="sub" type="submit" value="Submit values"/> <input type="button" id="addnew" name="addnew" value="Add new row" /> 

</form> 

的JavaScript

$(document).ready(function() { 
    var currentItem = 1; 
    $('#addnew').click(function(){ 
     currentItem++; 
     $('#items').val(currentItem); 
     var strToAdd = '<tr><td>Year</td><td>:</td><td><select name="year[]" ><option value="2012">2012</option><option value="2011">2011</option></select></td><td width="7%">Week</td><td width="3%">:</td><td width="17%"><select name="week[]" ><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option></select></td><td width="8%">&nbsp;</td><td colspan="2">&nbsp;</td></tr><tr><td>Actual</td><td>:</td><td width="17%"><input name="actual[]" type="text" /></td><td width="7%">PDF</td> <td width="3%">: <input id="uploadfile1" name="userfile[]" accept="application/pdf" class="btn btn-next upload" type="file" required></td></tr>'; 
     $('#data').append(strToAdd); 

    }); 
    $("#upload").validate({ 
     submitHandler: function (form) { 
      $.ajax({ 
       url: '<?php echo base_url(); ?>/ajax_upload', 
       type: 'POST', 
       data: $(form).serialize(), 
       success: function(data) { 
        if(data){ 
         alert("success"); 
        } else { 
         alert("error"); 
        } 
       }, 
       error: function(data){ 
        alert("error"); 
       }, 
       cache: false, 
       contentType: false, 
       processData: false 
      }); 
      return false; 
     } 
    }); 
}); 

我已經做了一個試驗fiddle

任何幫助將不勝感激。

回答

2

使窗體標籤如下

<form id="upload" action="#" method="POST" enctype="multipart/form-data" > 

希望這個作品

0

您沒有使用enctype與形式
嘗試

<form id="upload" action="#" method="POST" enctype="multipart/form-data">