PS: Dies ist keine Antwort, sondern nur eine Ergänzung zu den obigen Antworten.
Nur als zukünftige Referenz habe ich ein gutes Beispiel beigefügt, das uns helfen könnte, unsere Zweifel auszuräumen:
Versuche Folgendes. In diesem Beispiel werde ich eine Dateiauswahl erstellen, mit der eine Datei ausgewählt werden kann, und dann werde ich versuchen, den Namen der von mir ausgewählten Datei abzurufen:
Der HTML-Code ist unten :
<html>
<body>
<form action="#" method="post">
<input id ="myfile" type="file"/>
</form>
<script type="text/javascript" src="jquery.js"> </script>
<script type="text/javascript" src="code.js"> </script>
</body>
</html>
Die Datei code.js enthält den folgenden jQuery-Code. Versuchen Sie, beide jQuery-Codefragmente einzeln zu verwenden, und sehen Sie sich die Ausgabe an.
jQuery-Code mit attr ('Wert'):
$('#myfile').change(function(){
alert($(this).attr('value'));
$('#mybutton').removeAttr('disabled');
});
jQuery-Code mit val ():
$('#myfile').change(function(){
alert($(this).val());
$('#mybutton').removeAttr('disabled');
});
Ausgabe:
Die Ausgabe von jQuery-Code mit attr ('value') ist 'undefined'. Die Ausgabe von jQuery-Code mit val () entspricht dem von Ihnen ausgewählten Dateinamen.
Erläuterung : Jetzt können Sie leicht verstehen, was die Top-Antworten vermitteln wollten. Die Ausgabe von jQuery-Code mit attr ('Wert') ist 'undefiniert', da anfangs keine Datei ausgewählt wurde und der Wert undefiniert ist. Es ist besser, val () zu verwenden, da es den aktuellen Wert erhält.
Um zu sehen, warum der undefinierte Wert zurückgegeben wird, versuchen Sie diesen Code in Ihrem HTML-Code und Sie werden sehen, dass jetzt der attr. ('Wert') immer 'test' zurückgibt, da der Wert 'test' ist und zuvor undefiniert war.
<input id ="myfile" type="file" value='test'/>
Ich hoffe es war nützlich für dich.