Я пытаюсь загрузить файлы. Дело в том, что когда пользователь нажимает кнопку "Отправить" перед тем, как выбрать файл, пользователь должен получить предупреждение. Если файлы уже выбраны, значение кнопки submit
должно измениться на " Updating...
Для этого я использовали метод change()
, но он работает неправильно.
javascript
файл:
$(document).ready(function()
{
var file_name='';
//for checking whether the file queue contain files or not
$('#upload').click(function()
{
$('#file').live('change',function(){
for (var i = 0; i < this.files.length; i++)
{
file_name = this.files[i].name;
//alert(file_name);
if(file_name !== null && file_name !== undefined)
{
$('#upload').attr('value','Updating..');
}
else
{
alert('error');
}
}//end for loop
});
});
});
html:
<form id='file-form' action="" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="file" ><br>
<input type="button" name="upload" id='upload' value="Upload file">
</form>
пожалуйста помогите.
Вы инициализировали имя_файла ''. Тем не менее, в вашем сравнении вы проверяете, равно ли оно null или undefined, ни одно из которых не будет истинным, если оно не установлено.
Вместо:
if(file_name !== null && file_name !== undefined)
вы, вероятно, ищете:
if (file_name !== '')
Согласно документации JQuery.live используется устаревшее использование метода.
$('#file').on('change',function(){
//your code
});
Попробуй это
change
из обработчика событияclick
загрузки.change
вашего события будет связывать обработчик, когда вы нажимаете на кнопку загрузки.