Frage

Es kommt mir etwas albern vor, dies zu posten, da es nach dem, was ich gelesen habe, ziemlich direkt erscheint, aber ich weiß nicht, warum ich es immer sehe 1 als Wert für 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>         
War es hilfreich?

Lösung

Ändern Sie die Benachrichtigungszeile in:

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

Dies funktioniert, weil Sie versuchen, das Dateiattribut des Eingabe-DOM-Elements abzurufen Dateiliste Objekt.Du willst dann das Längenattribut der Dateiliste, die Ihnen sagt, wie viele Objekte ausgewählt wurden.Sie wählen zuerst das Eingabeelement mit jQuery aus. Das Ergebnis einer jQuery-Auswahl wie $("#files") ist jedoch eine jQuery-Sammlung. Sie möchten das zugrunde liegende DOM-Objekt für das Eingabeelement, da nur dieses über das Dateiattribut verfügt.Jedes jQuery-Objekt maskiert sich als Array, sodass Sie die Standard-Array-Dereferenzierung verwenden können, um das zugrunde liegende DOM-Element abzurufen.(Sehen: http://api.jquery.com/get/ )

Versuch es!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top