好的,这是一个非常令人困惑的问题,仅适用于专家。
我有一个动态创建联系表单输入字段的插件。
因此在许多用于上传文件的输入字段中。我已经定义了 onchange 事件。
onchange=" var len = $(\'[type=file]\').length ; for(i=0; i < len; ++i){ if($(\'[type=file]\')[i].files[0].size > 15000000 ){ $(\'.inputDugme\').attr(\'disabled\',\'disabled\'); alert(\'Maksimalna dozvoljena veličina fajla je 15mb\')}else{$(\'.inputDugme\').removeAttr(\'disabled\',\'disabled\');}}"
我尝试点击事件来检查所有输入字段,如果大于15mb,则禁用提交按钮。
我计算输入字段的数量
$(\'[type=file]\').length
问题是因为另一个输入字段没有文件,我会在 JavaScript 中出错,因为我写了这行
if($(\'[type=file]\')[i].files[0].size > 15000000 )
我将有未定义的索引,因为输入字段的第二个文件未被选中。
需要帮助。有什么想法吗?
答案 0 :(得分:1)
您可以轻松地将添加的文件的文件大小一起添加,如下所示 (使用jQuery,但如果没有它,它就一样)
var inputs = $('input[type="file"]')
inputs.on('change', function() {
var size = 0;
inputs.each(function() { // iterate over all inputs
$.each(this.files, function() { // iterate over all available files
size += this.size; // add up the filesizes
});
});
if (size > 15000000) {
alert('Too much data !');
}
});
答案 1 :(得分:0)
而不是简单地选择所有文件输入$(\'[type=file]\')
,过滤那些包含文件的文件:
$('[type=file]').filter(function(fl){
return this.value;
})
将其转换为字符串并使用它。