PS: Ce n'est pas une réponse mais juste un supplément pour les réponses ci-dessus.
Juste pour la référence future, j'ai inclus un bon exemple qui pourrait nous aider à nettoyer notre doute:
Essayez les solutions suivantes. Dans cet exemple, je vais créer un sélecteur de fichier qui peut être utilisé pour sélectionner un fichier, puis je vais essayer de récupérer le nom du fichier que j'ai sélectionné:
Le code html ci-dessous:
<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>
L'code.js le fichier contient le code jQuery. Essayez d'utiliser les deux
de jQuery de fragments de code un par un et voir le résultat.
jQuery avec attr('value'):
$('#myfile').change(function(){
alert($(this).attr('value'));
$('#mybutton').removeAttr('disabled');
});
jQuery avec val():
$('#myfile').change(function(){
alert($(this).val());
$('#mybutton').removeAttr('disabled');
});
Sortie:
La sortie de jQuery avec attr('value') sera "indéfini".
La sortie de jQuery avec val() sera le nom de fichier que vous avez sélectionné.
Explication:
Maintenant vous pouvez comprendre facilement ce que sont les réponses voulu transmettre. La sortie de jQuery avec attr('value') sera 'undefined' parce que d'abord il n'y a pas de fichier sélectionné, de sorte que la valeur est undefined. Il est préférable de l'utiliser val (), car il obtient la valeur actuelle.
Afin de voir pourquoi la valeur indéfinie est retourné essayer ce code dans le html, et vous verrez que, maintenant, la attr.('valeur') renvoie 'test', toujours, parce que la valeur est "test" et, auparavant, il a été défini.
<input id ="myfile" type="file" value='test'/>
J'espère que c'était utile pour vous.