JQuery输入类型文件上传验证IE问题

时间:2014-01-29 13:09:06

标签: javascript jquery

我最终想出了如何验证使用输入文件元素选择的文件。我所做的是检查文件类型,如果它与我想要的扩展名匹配,那么我将它返回到文本框,如果不是,我再次触发输入文件元素。

问题是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 个答案:

答案 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');