2016-11-01 83 views
5

所以我有這樣的形式:檢查FORMDATA是空

<form id="uploadimage" action="" method="post" enctype="multipart/form-data">     
    <div class="text-inside"> 
     Selectati Categoria<br><select id="sc" name="selectCat"></select><br><br> 
     Nume Produs<br><input id="numprod" type="text" name="input-text" /><br> 
     Pret Produs<br><input id="pretprod" type="number" name="input-pret" /><br><br> 
     <input type="file" name="file"><br><br> 
     <input type="submit" name="sumit" value="Send" id="imgButton" class="button" /><br><br> 
    </div>    
</form> 

,我試圖檢查是filelds爲了防止用戶submiting空字段,所以我用這個空:

$('#uploadimage').on('submit',(function(e) { 
    e.preventDefault(); 
    var formData = new FormData(this); 
    var name= $('#numprod').val(); 
    var pret = $('#pretprod').val(); 

    if(name && pret){ 
     $.ajax({ 
      url: 'connect.php', 
      type: 'POST', 
      data: formData, 
      async: false, 
      cache: false, 
      contentType: false, 
      processData: false, 
      success: function(){ 
       alert('uploaded successuflly!'); 
      } 
     }); 
    }else{alert('input fields cannot be left empty you num num!');} 
})); 

但我仍然可以提交沒有選擇的文件,並且ajax不再重新加載頁面了。任何建議我可以做什麼?

+0

簡短的回答,你不可靠。較長的回答:在Chrome和Firefox中,您可以使用FormData.entries()來檢索信息,但舊版瀏覽器不支持這些信息,當然也不支持IE。另一種方法是直接驗證表單元素。另外請注意,您應該刪除'async:false',因爲它的使用方式非常糟糕 –

+0

您沒有檢查'file'字段。 – TheValyreanGroup

+0

TheValyreanGroup完成了它,但頁面仍然沒有重新加載 –

回答

4

簡短的回答,你不能可靠地檢查FormData包含的信息(作爲你的原始問題)。

在Chrome和Firefox中,您可以使用FormData.entries()來檢索信息,但舊版瀏覽器不支持這些信息,當然在IE中不支持。

另一種方法是直接驗證表單元素 - 正如您所做的那樣 - 除了您遺漏了file輸入。另外請注意,您應該刪除async: false,因爲它的使用方式非常糟糕。

要解決你的代碼,檢查if條件file輸入val()

$('#uploadimage').on('submit', function(e) { 
    e.preventDefault(); 
    var name = $('#numprod').val().trim(); 
    var pret = $('#pretprod').val().trim(); 
    var file = $('input[type="file"]').val().trim(); // consider giving this an id too 

    if (name && pret && file) { 
     $.ajax({ 
      url: 'connect.php', 
      type: 'POST', 
      data: new FormData(this), 
      cache: false, 
      contentType: false, 
      processData: false, 
      success: function(){ 
       alert('uploaded successuflly!'); 
      } 
     }); 
    } else { 
     alert('input fields cannot be left empty you num num!'); 
    } 
}); 
+0

感謝Rory,它可以工作,但是我想提交 –

+0

'window.location.reload()'後重新加載頁面。儘管這使得AJAX請求非常實用。 –

1

添加一個ID類型文件的輸入並檢查是否有下面的代碼片段文件:

if(document.getElementById("file").files.length == 0){ 
    console.log("no files selected"); 
}