我最终想出了如何验证使用输入文件元素选择的文件。我所做的是检查文件类型,如果它与我想要的扩展名匹配,那么我将它返回到文本框,如果不是,我再次触发输入文件元素。
问题是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>
答案 0 :(得分:1)
改变这个:
$('#fleTest2').trigger('click');
到此:
$('#fleTest2').trigger('change'); //<---use change not click
您必须触发change
,因为您已将此 change
事件绑定到该元素,因此您必须触发它。但是,如果您使用.on()
方法绑定多个事件,则可以触发click
事件:
$('#fleTest2').on('change click', function() {
然后你也可以触发click
:
$('#fleTest2').trigger('click');