Pergunta

Eu me sinto um pouco idiota postando isso, como parece muito para a frente pelo que andei lendo, mas eu não sei porque eu estou sempre vendo 1 como o valor para files.length.

<html>
<head>
<script src="http://code.jquery.com/jquery-1.7.2.js" type="text/javascript"></script>
<script>
    $(document).ready(function() {
        var button = $('#button');
        button.click(function(){    
           var files = $('#files');
           alert(files.length);
        });
     });
</script>
</head>
<body>
  <form>
    <input type="file" id="files" multiple="" />
    <input type="button" id="button" value="Upload" />
  </form>
</body>
</html>         
Foi útil?

Solução

Alterar a linha de alerta para:

alert(files[0].files.length);

Isso funciona porque o que você está tentando fazer é obter os arquivos de atributo de entrada do elemento DOM que é o FileList objecto.Em seguida, você deseja que o atributo de comprimento do FileList que irá dizer-lhe quantos objetos foram selecionados.Você primeiro selecionar o elemento input com o jQuery, no entanto, o resultado de um fórum selecção como $("#arquivos") é uma biblioteca de jQuery coleção, você quer subjacente objeto DOM para o elemento de entrada, porque apenas os que tem os arquivos de atributo.Cada objeto jQuery se disfarça como uma Matriz, então você pode utilizar o padrão de matriz de referência para obter subjacente elemento DOM.(Veja: http://api.jquery.com/get/ )

Tente Isso!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top