如何在使用onclick打开模式 Bootstrap 3时清除其输入type=file

ie3xauqp  于 2022-12-20  发布在  Bootstrap
关注(0)|答案(1)|浏览(147)

我在Bootstrap 3中有一个modal,我想从用户那里得到一个文件。我的问题是当用户选择了这个文件,但它加载失败,关闭了modal,然后再次打开它,以前的文件仍然存在。我如何在用onclick打开modal的函数中删除这个文件?

<button class="pointer" onclick="return contractUpload('${ml.getId()}')"><a>upload contract</a></button>
<div class="modal fade" id="contractModal">
        <div class="container">
            <div class="modal-dialog" style="margin-top: 15%">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                            <span aria-hidden="true">&times;</span>
                        </button>
                        <h4 class="modal-title">contract modal <span id="mId2"></span></h4>
                    </div>
                    <div class="modal-body">
                        <div class="row">
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label class="control-label">select file :</label>
                                    <label class="btn btn-success">
                                        <input type="file" id="contractFile" accept="application/pdf">
                                        <i class="fa fa-cloud-upload"></i>
                                        <span id="browse">choose :</span>
                                    </label>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-success pull-left" data-dismiss="modal">upload</button>
                    </div>
                </div>
            </div>
        </div>
    </div>
<script>
    function contractUpload(mId) {
        $('#contractModal').modal();
        document.getElementById("mId2").innerHTML = mId;
    }
</script>

我使用了下面的代码,但它不工作:

document.getElementById("contractFile").value = "";
0pizxfdo

0pizxfdo1#

您可能希望在隐藏模态之后重置#contractFile元素的值,这可以通过简单地侦听hidden.bs.modal事件来完成,即:

const modal = document.getElementById('contractModal')
modal.addEventListener('hidden.bs.modal', () => {
  document.getElementById('contractFile').value = '';
});

当然,如果你想在模态完全隐藏之前重置输入,那么就听hide.bs.modal,尽管这会创建一个奇怪的UI/UX,因为当模态淡出时字段会被重置。
请参见下面的概念验证示例:
x一个一个一个一个x一个一个二个x

相关问题