Jquery在IE问题中输入文件类型操作

时间:2013-11-11 05:03:56

标签: javascript jquery html internet-explorer

我在IE中操作输入类型字段的值时遇到问题,似乎在firefox中工作正常......

以下是我的问题:

我创建了一个虚假的上传按钮,当按下时实际上点击了真正的上传按钮(透明,css修复和所有),选择文件后我实际获取文件名并在跨区域显示(全部这个大惊小怪,因为我的客户想要自定义查找文件上传器)。

真正的问题是IE,每当我上传文件时,文件名都没有显示,我通过调试器检查IE只是清空输入类型文件字段。

以下是代码:

<div class="right-pad">
   <p>Select an image file on your computer (4mb max).</p>
   <div class="btn-rect lightbox-btn btn-choose-file light-blue-btn" id="fakeUploadBtn">Choose File</div>                                    
   <div class="btn-rect lightbox-btn btn-choose-file light-blue-btn long-words-fix" id="upload-pic-file-name" ><p>No file chosen...</div>
   <input style="width:100%;position:relative;z-index: 10" id="realUploadBtn" name="image_upload_path" class="btn-rect lightbox-btn btn-choose-file light-blue-btn  real-upload" value="" type="file">                                                                                                        
</div>

JS:

$(function() {
                    $("#realUploadBtn").change(function() {
                        var fileName = $(this).val().replace(/C:\\fakepath\\/i, '');
                        $("#upload-pic-file-name").html(fileName);
                    });
                });

            $('#fakeUploadBtn').click(function() {

                $('#realUploadBtn').trigger('click');
            });



解决了我的问题的第一部分,第二部分似乎是一个全面的IE问题,请参考这些链接,
- &GT; http://www.webdeveloper.com/forum/showthread.php?181272-Need-help-with-Access-is-denied-error-in-IE
- &GT; Accessing File Data of file input in IE8 on the client?

1 个答案:

答案 0 :(得分:0)

首先你的代码应该是

$(function() {
                    $("#realUploadBtn").change(function() {
                        var fileName = $(this).val().replace(/C:\\fakepath\\/i, '');
                        $("#upload-pic-file-name").html(fileName);
                    });


            $('#fakeUploadBtn').click(function() {

                $('#realUploadBtn').trigger('click');
     });
  });

并且它是浏览器默认行为IE不支持此属性

所以你可以使用

$("input[name='attachment[]']").each(function() {
    var fileName = $(this).val().split('/').pop().split('\\').pop();
    console.log(fileName);
});

您无法获取文件的完整路径,因为它取决于您使用的浏览器。输入文件唯一常见的跨浏览器值是文件名。