Метод jquery .change () не работает должным образом

0

Я пытаюсь загрузить файлы. Дело в том, что когда пользователь нажимает кнопку "Отправить" перед тем, как выбрать файл, пользователь должен получить предупреждение. Если файлы уже выбраны, значение кнопки 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>

пожалуйста помогите.

  • 0
    Поместите свой обработчик события change из обработчика события click загрузки. change вашего события будет связывать обработчик, когда вы нажимаете на кнопку загрузки.
  • 0
    .live устарела. Используйте .on instaed
Показать ещё 5 комментариев
Теги:
file

2 ответа

0

Вы инициализировали имя_файла ''. Тем не менее, в вашем сравнении вы проверяете, равно ли оно null или undefined, ни одно из которых не будет истинным, если оно не установлено.

Вместо:

if(file_name !== null && file_name !== undefined)

вы, вероятно, ищете:

if (file_name !== '')
0

Согласно документации JQuery.live используется устаревшее использование метода.

$('#file').on('change',function(){
       //your code
   }); 

Попробуй это

Ещё вопросы

Сообщество Overcoder
Наверх
Меню