2014-01-29 2 views
1

В конечном итоге я выяснил, как проверять файлы, выбранные с помощью элемента входного файла. То, что я делаю, это проверить тип файла, и если он соответствует расширению, которое я хочу, я верну его в текстовое поле, если он не активирует элемент входного файла снова.JQuery тип ввода для загрузки файлов IE проблемы

Проблема заключается в том, что IE 9/10 запускает элемент входного файла в первый раз, но не во второй раз. FireFox работает как шарм.

<input type="file" id="fleTest2" style="display: none;"> 
<input type="text" id="txbText2" style="cursor: pointer;" readonly="readonly"> 
<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('#txbText2').click(function() { 
      $(this).blur(); 
      $('#fleTest2').trigger('click'); 
     }); 
     $('#fleTest2').change(function() { 
      var vals = $(this).val(), val = vals.length ? vals.split('\\').pop() : ''; 
      var filetype = vals.split('.').pop().toLowerCase(); 
      if ($.inArray(filetype, ['txt']) == -1) { 
       alert('Please select only text files'); 
       $(this).click(); 
      } else { 
       $('#txbText2').val(val).blur(); 
      }; 
     }); 
    }); 
</script> 

ответ

1

изменить это:

$('#fleTest2').trigger('click'); 

к этому:

$('#fleTest2').trigger('change'); //<---use change not click 

Вы должны вызвать change как вы связали это change событие элемента, так что вы должны триггером Это. Тем не менее, если вы используете метод .on() связать несколько событий, то вы можете вызвать click событие:

$('#fleTest2').on('change click', function() { 

, то вы можете вызвать click тоже:

$('#fleTest2').trigger('click'); 
+0

спасибо Jai. Это не та часть, с которой я столкнулся. Он находится в инструкции if, где проблема. После проверки выбранного файла. – user3017424

Смежные вопросы