Pregunta

Me siento un poco tonto publicar esto, ya que parece bastante sencillo de lo que he estado leyendo, pero no sé por qué siempre estoy viendo 1 como el valor de 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>         
¿Fue útil?

Solución

Cambio de la línea de alerta a:

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

Esto funciona porque lo que usted está tratando de hacer es conseguir los archivos atributo de la entrada del elemento DOM que es el FileList objeto.A continuación desea el el atributo de longitud de los de la lista de archivos que le dirá el número de objetos seleccionados.Usted está seleccionando el elemento input con jQuery, sin embargo, el resultado de un jQuery selección como $("#archivos") es un jQuery colección, desea que el subyacente objeto DOM para el elemento de entrada porque sólo el que tiene los archivos de atributo.Cada objeto jQuery se disfraza como una Matriz de modo que usted puede utilizar el estándar de la matriz de eliminación de referencias para obtener el subyacente elemento DOM.(Ver: http://api.jquery.com/get/ )

¡Pruébalo!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top