2016-11-01 48 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"); 
}