我在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?
答案 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);
});
您无法获取文件的完整路径,因为它取决于您使用的浏览器。输入文件唯一常见的跨浏览器值是文件名。