var $imagefile = $('<input />')
.attr({
type: 'file',
name: 'imageFile',
id: 'imageFile'
});
以上是我创建文件输入的代码。
下面是检查表格行中文件格式是否正确的代码:
function validation() {
var marks = parseInt($("#total-weight").text());
var _qid = "";
var _msg = "";
var allowedTypes = ["jpg", "jpeg", "gif", "png"];
var path = $("#imageFile").val();
var ext = path.substring(path.lastIndexOf('.') + 1).toLowerCase();
var alertValidation = "";
// Note, this is just so it's declared...
$("tr.optionAndAnswer").each(function() {
_qid = $("td.qid",this).text();
_msg = "You have errors on Question Number: " + _qid + "\n";
$("#imageFile",this).each(function() {
if ($.inArray(ext, allowedTypes) < 0) {
alertValidation += '\n\u2022 Unsupported file type';
}
if (alertValidation != "") {
return false; //Stop the each loop
}
});
if(alertValidation != ""){
return false;
}
});
if (alertValidation != "") {
alert(_msg + alertValidation);
return false;
}
return true;
}
现在,通过识别哪个文件类型正确且不正确,这可以正常工作。问题是,如果在所有表行中用户没有选择文件,那么它会提供不正确的警报。
如何获取它以便在用户不选择文件时允许输入空白文件?
答案 0 :(得分:1)
在这个例行程序中
$("#imageFile",this).each(function() {
if ($.inArray(ext, allowedTypes) < 0) {
alertValidation += '\n\u2022 Unsupported file type';
}
if (alertValidation != "") {
return false; //Stop the each loop
}
});
您应该检查它是否有值,如果有,请继续处理。像这样:
$("#imageFile",this).each(function() {
if($(this).val().length) {
// continue on
}
});
在我们的评论之后,你应该使用类选择器而不是id选择器。所以你的创建代码可能应该是这样的:
var $imagefile = $('<input />')
.attr({
type: 'file',
name: 'imageFile',
class: 'imageFile'
});
你的日常工作应该是:
$(".imageFile",this).each(...
这样你可以迭代一个集合。