2014-01-29 91 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

感謝宰。這不是我遇到問題的部分。問題在於if語句。我檢查選擇的文件後。 – user3017424