2015-08-26 6 views
3

Это мой входной файл элемент:.

<input type="file" id="StudentPhoto" value="StudentPhoto" style="display: none;">

Это функция проверки:

$(document).ready(function() { 
    $('#StudentPhoto').change(function() 
    { 
     var file_data = $("#StudentPhoto").prop("files")[0]; 
     var size = file_data.size; 
     var type = file_data.type; 
     var name = file_data.name; 
     var input = $("#StudentPhoto"); 

     if(type !== 'image/png' && type !== 'image/jpg' && type !== 'image/jpeg') 
     { 
      alert("Only JPG & PNG files are allowed to upload as student photo."); 
      $('#StudentPhoto').click(); 
     } 
     else if(size > 2097152) 
     { 
      alert("The maximum photo size is 2MB\n"); 
      $('#StudentPhoto').click(); 
     } 
    }); 
}); 

Если файл, выбранные у пользователя есть недопустимый формат или размер, он должен открыть диалог, чтобы попросить его снова выбрать файл, но это не так, оператор $('#StudentPhoto').click(); в функции не работает. Зачем? Есть ли другой метод?

+0

сво входной файл, поэтому для этого обязательно нажмите событие будет показывать окно и позволить пользователю выбрать файл – Newbie

+0

Это не работает ни @ArunPJohny – Newbie

+0

жаль ... Я действительно означает 'doesn't' ... пропустил это –

ответ

-2

вам нужно вставить обратный вызов жгутов щелкните событие:

$(document).ready(function() 
     { 
      $('#StudentPhoto').change(function() 
      { 
       var file_data = $("#StudentPhoto").prop("files")[0]; 
       var size = file_data.size; 
       var type = file_data.type; 
       var name = file_data.name; 
       var input = $("#StudentPhoto"); 

       if(type !== 'image/png' && type !== 'image/jpg' && type !== 'image/jpeg') 
       { 
        alert("Only JPG & PNG files are allowed to upload as student photo."); 
        $('#StudentPhoto').click(); 
       } 
       else if(size > 2097152) 
       { 

        $('#StudentPhoto').click(function(){ 
alert("The maximum photo size is 2MB\n"); 
}); 
       } 
      }); 
    }); 
+0

вы неправильно поняли мой вопрос – Newbie

+0

Привет, Ah Yong, можете ли вы уточнить свой вопрос? –

0

Или вы можете использовать метод .trigger(), чтобы огонь событий нажмите на кнопку. Мы также будем использовать input, так как вы уже сохранили поле файла.

input.trigger('click'); 

Надеюсь, это поможет.

+0

он не работает с обработчиком изменений того же элемента - по крайней мере, в chrome –

+0

В чем разница между '$ ('# StudentPhoto'). Click();' и 'input.trigger ('click'); ' –

+0

http://jsfiddle.net/arunpjohny/zg1p5719/2/? –

0

Вы можете использовать HTML DOM клик() метод:

document.getElementById('StudentPhoto').click(); 
+0

http://jsfiddle.net/arunpjohny/zg1p5719/4/? –

+1

Я нашел этот ответ. Это может помочь вам понять вашу проблему. http://stackoverflow.com/a/25886585/3861639 – chungvh

+0

@shess Но функция '.click()' для ввода моего файла работает в другой функции/состоянии. – Newbie

0

Измените свой входной элемент файла в:

<input type="file" id="StudentPhoto" value="StudentPhoto" style="visibility: hidden">

Обратите внимание, что я использовал visibility: hidden вместо display: none.

не может вызывать событие клика при вводе не отображаемого файла.

+0

http://jsfiddle.net/arunpjohny/zg1p5719/5/? –

0

Попробуйте это:

$(function() { 
    function onStudentPhotoChange($element) { 
     var file_data = $element.prop("files")[0]; 
     var size = file_data.size; 
     var type = file_data.type; 
     var name = file_data.name; 

     switch(true) { 
      case (type !== 'image/png' && type !== 'image/jpg' && type !== 'image/jpeg') : 
      alert("Only JPG & PNG files are allowed to upload as student photo."); 
      onStudentPhotoChange($element); 
      break; 

      case (size > 2097152) : 
      alert("The maximum photo size is 2MB\n"); 
      onStudentPhotoChange($element); 
      break; 
     } 
    } 

    $('#StudentPhoto').change(function() 
    { 
     onStudentPhotoChange($this); 
    }); 
}); 
Смежные вопросы