PS: Це не відповідь, а лише доповнення до вищезазначених відповідей.
Тільки для подальшого використання я навів хороший приклад, який може допомогти нам очистити наші сумніви:
Спробуйте наступне. У цьому прикладі я створив селектор файлів, за допомогою якого можна вибрати файл, а потім спробую отримати ім'я вибраного файлу:
HTML-код нижче :
<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>
Файл code.js містить такий код jQuery. Спробуйте використати обидва фрагменти коду jQuery по одному і перегляньте результати.
Код jQuery з attr ('значення'):
$('#myfile').change(function(){
alert($(this).attr('value'));
$('#mybutton').removeAttr('disabled');
});
Код jQuery з val ():
$('#myfile').change(function(){
alert($(this).val());
$('#mybutton').removeAttr('disabled');
});
Вихід:
Вихід коду jQuery з attr ('value') буде 'undefined'. На виході коду jQuery з val () буде вказано вибране вами ім'я файлу.
Пояснення : Тепер ви можете легко зрозуміти, що хотіли передати найкращі відповіді. Вихід коду jQuery з attr ('value') буде 'undefined', оскільки спочатку не було вибрано жодного файлу, тому значення undefined. Краще використовувати val (), оскільки він отримує поточне значення.
Для того, щоб зрозуміти, чому повертається невизначене значення, спробуйте цей код у своєму HTML, і ви побачите, що зараз attr. ('Value') завжди повертає 'test', оскільки значення є "test", а раніше воно було невизначеним.
<input id ="myfile" type="file" value='test'/>
Сподіваюся, це було вам корисно.