JavaScript验证多个文件的大小

时间:2014-12-26 11:59:30

标签: javascript

好的,这是一个非常令人困惑的问题,仅适用于专家。

我有一个动态创建联系表单输入字段的插件。

因此在许多用于上传文件的输入字段中。我已经定义了 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 ) 

我将有未定义的索引,因为输入字段的第二个文件未被选中。

需要帮助。有什么想法吗?

2 个答案:

答案 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 !');
    }
});

FIDDLE

答案 1 :(得分:0)

而不是简单地选择所有文件输入$(\'[type=file]\'),过滤那些包含文件的文件:

$('[type=file]').filter(function(fl){
  return this.value;
})

将其转换为字符串并使用它。

相关问题