【发布时间】:2013-10-18 12:42:10
【问题描述】:
我有一个带有假按钮的隐藏文件输入和用于浏览器显示一致性的输入。我目前也可以看到原始输入,并且发现使用它上传文件一切正常。
但是,使用“dummyfile”中的按钮通过 javascript 触发点击,该值按预期加载,在 UI 中也是如此。但是,当我这次单击提交时,它会清除输入中的值,并且什么也不做。这仅发生在 IE 中,而不发生在 chrome 中。这是我之前问过的问题的根源:https://stackoverflow.com/questions/19275901/internet-explorer-specific-form-post-with-file-input-returning-empty-file-list。我将此作为一个单独的问题提出,因为它的相关性超出了该问题的范围。
HTML(这是在部分视图中,因此我可以添加更多输入并返回文件集合,我只是将其拉出到主视图并硬编码了 0 以解决这个问题和另一个错误)。
<div class="control-group">
<label class="control-label" for='@String.Format("file{0}", 0)'>File</label>
<div class="controls">
<input type="file" name="files" class="hiddenFileInput" id='@String.Format("file{0}", 0)' />
<div class="dummyfile">
<input id="@String.Format("filename{0}", 0)" type="text" class="input disabled" name="filename" >
<button type="button" class="btn btn-primary">Choose</button>
</div>
</div>
</div>
jQuery:
function fileUploadControlInit() {
$('.dummyfile .btn').unbind("click").on("click", function (e) {
$(this).closest("div").siblings(" :file").trigger('click');
});
$('.hiddenFileInput').on("change", function (e) {
var val = $(this).val();
var file = val.split(/[\\/]/);
var fileName = file[file.length - 1];
$(this).siblings("div").children(" :text").val(fileName);
$("#UploadFile").prop('disabled', false);
});
}
【问题讨论】:
-
可能与您的 dummyfile div 中的
class="input disabled"有关 -
不,这只是防止打字,除此之外是控件保留其值。
标签: jquery html asp.net-mvc forms dom