0

好吧,我在 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 问题,请参考这些链接,
-> http://www.webdeveloper.com/forum/showthread.php?181272-Need-help- with-Access-is-denied-error-in-IE
->在客户端访问 IE8 中文件输入的文件数据?

4

1 回答 1

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);
});

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

于 2013-11-11T05:14:34.457 回答