所以我有这样的形式:
<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是否为空,以防止用户提交空字段,所以我使用了以下方法:
$('#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不再重新加载页面。有什么建议我该怎么办?
最佳答案
简短的答案,您不能可靠地检查FormData
是否包含信息(就像您最初提出的问题一样)。
在Chrome和Firefox中,您可以使用FormData.entries()
来检索信息,但是较旧的浏览器(当然在IE中也不支持)不支持这些信息。
另一种方法是直接验证表单元素(如您所做的那样),只是您错过了file
输入。还要注意,您应该删除async: false
,因为使用它是非常糟糕的做法。
要修复您的代码,请在val()
条件下检查file
输入的if
:
$('#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!');
}
});
关于jquery - 检查FormData是否为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40364692/