Получить значение полей загрузки и подсчета массива - PullRequest
1 голос
/ 06 ноября 2011

У меня есть следующий HTML-код:

<form name="uploadForm" action="" method="POST" enctype="multipart/form-data">
<input type="file" name="file_sub[]" />
<input type="file" name="file_sub[]" />
<input type="file" name="file_sub[]" />
<input type="file" name="file_sub[]" />
<input type="file" name="file_sub[]" />
<input type="button" onClick="javascript:submitform();" value="SUBMIT BTN" />
</form>

и вот функция javascript submitform():

function submitform()
{
var minUpload = 1;
var uploadNo;
var count=document.uploadForm.file_sub.length;
for(a=0;a<count;a++)
        {

           if(document.uploadForm.file_sub.value != '')
               {
                 uploadNo++;
               }

         }

    if(uploadNo > minUpload){   
  document.uploadForm.submit();
    }else{
        alert('Please Upload Atleast ' + minUpload + ' files');
    }

}

Предполагается, что JavaScript должен проверить и убедиться, что по крайней мере minUpload из файловых полей содержит файл внутри них.

, но по какой-то причине, когда я пытаюсь получить длину файла в функции, я получаю сообщение об ошибке (в соответствии с отладчиком chrome, я получаю «Uncaught TypeError: Невозможно прочитать свойство 'length' of undefined"), однако я пробовал то же самое с флажками, и это работает просто отлично. Что я делаю неправильно? можно ли вообще выполнить такую ​​задачу в js?

1 Ответ

3 голосов
/ 06 ноября 2011

Вы должны обратиться к file_sub[].Фиксированная функция:

var count = document.uploadForm["file_sub[]"].length;

function submitform(){
    var minUpload = 1;
    var uploadNo;
    var files = document.forms['uploadForm']["file_sub[]"];
    var count = files.length;
    for(var a=0; a<count; a++){
        if(files[a].value != ''){
            uploadNo++;
        }
    }

    if(uploadNo > minUpload){   
        document.forms['uploadForm'].submit();
    } else {
        alert('Please Upload Atleast ' + minUpload + ' files');
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...