Autor Zpráva
blahapet
Profil
Ahoj, nějak se mi nedaří zkontrolovat přes JS velikost nahraných fotografií. Mám tento soubor:

function TotalSize(){
      var Input = document.getElementsByClassName("fotografie");      
      var totalSize = 0;

      for(x = 0; x < Input.length; x++){
        if(Input[x].value != ''){
          Files = Input[x].files;
          totalSize += Files[x].size;
        }     
      }

        return totalSize;
}




    </script>
    



<form action="/admin/" method="post" enctype="multipart/form-data">

<input type="hidden" name="addPhotos" value="ok" />


<div class="obal-polozky">


<div class="polozky" id="polozky">
        <div class="polozka" id="sablona">
        <input type="hidden" name="item[]" value="ok">

      <input type="file" class="fotografie" name="fotografie[]" id="fotografie"  accept="image/jpeg" size="30" required="required" />&nbsp;&nbsp;

       <input class="popisFoto" type="text" name="title[]"  size="30" placeholder="Popis fotografie" />&nbsp;
            <span class="odebrat" onclick="odebrat(this)">&times;</span>
            
        </div>
    </div>
    
    <span class="pridat" onclick="pridatPole()">Další fotografie</span>

    <p style="text-align:center;margin-top:50px"><input type="submit" id="submit" value="Přidat fotografie" />
    &nbsp;
    <input type="button" onclick="alert(TotalSize())" value="Zjisti velikost souborů" /></p>
</div>


<script>

var prvniPolozka = document.getElementById('sablona');
var sablona = prvniPolozka.cloneNode(true);

    document.getElementById('sablona').style.display = '';
    document.getElementsByClassName('odebrat')[0].style.visibility = 'hidden';

function pridatPole() {
    var kopie = sablona.cloneNode(true);
    document.getElementById('polozky').appendChild(kopie);
}

function odebrat(el) {
    var polozka = el.parentNode;
    polozka.parentNode.removeChild(polozka);
}

</script>



</form>


Když vložím první fotografii a kliknu na button Zjisti velikost souborů, tak mi to v alertu vypíše velikost prvního souboru. Pokud přidám další fotografii, tak se už ani prázdej alert neobjeví,

Děkuju moc za pomoc.
Kajman
Profil
Files je seznam souborů (v jednom inputu je možné zvolit více souborů, pokud to je povolené), tak si nad ním udělejte další cyklus a nepoužívejte jako index tohoto pole x, protože to je index z jiného pole.
blahapet
Profil
Díky za nasměrování, nakonec jsem to vyřešil jinak. JS kód jsem umístil dolů pod formulář:

function checkTotalSize(){

  var totalSize = 0;

  $(".fotografie").each(function() {
    for (var i = 0; i < this.files.length; i++) {
      totalSize += this.files[i].size;
    }
  });


if(totalSize > 50000000){
  alert('Byla překročena kvóta 50 MB pro velikost nahraných fotografií!');
        return false;
}else{
  return true;
}

}

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0