2014-12-26 55 views
0

好吧,這是一個非常令人困惑的問題,僅供專家參考。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

在變化,檢查只改變輸入,不是每一個。請不要使用內聯html事件處理程序,這是一種壞習慣。 – Zudwa

回答

1

您可以輕鬆地添加的添加文件的filesizes在一起,像這樣
(使用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

+0

是的我需要這樣的東西,但要檢查每個文件的大小,如果bouth文件小於15刪除禁用attr的按鈕 –

0

,而不是簡單地選擇所有文件輸入,$(\'[type=file]\'),篩選那些有文件:

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

將它轉換爲一個字符串,並使用它。