【发布时间】:2020-03-27 16:43:40
【问题描述】:
我在我的页面中使用上传表单/组。这很好用。但不可能为此添加重置/清除功能。我的控制是:
<div id="uploadform" style="width:100%;" data-provides="fileupload">
<div class="input-group mb-3">
<div class="input-group-prepend">
<label class="input-group-text"><i class="fas fa-folder-plus"></i></label>
</div>
<div class="custom-file" >
<input type="file" name="sampleFile" class="custom-file-input" id="inputGroupFile01">
<label class="custom-file-label" for="inputGroupFile01">Choose file</label>
</div>
<div class="input-group-append">
<button type="button" id="fileupload" class="btn btn-primary">Upload!</button>
</div>
</div>
</div>
我有一个检测变化事件的功能
$('#inputGroupFile01').on('change',function(e){
console.log("onchange");
//get the file name
var fileName = e.target.files[0].name;
//replace the "Choose a file" label
$(this).next('.custom-file-label').html(fileName);
});
文件选择和标签都可以,但是无法重置输入文件。 永远不会触发更改事件。我将重置移动到上传按钮
$( '#fileupload' ).click(function() {
console.log("Upload");
$('#inputGroupFile01').val('');
return;
但也没有效果。我还尝试在表单标签内使用 all 并调用 this.form.reset()。没有效果。我真的很困惑。我认为 change 事件永远不会被触发,因为输入 typ="file" 永远不会被清除/重新发送?有什么想法吗?
附加信息:
如果我将文件添加到控件。更改事件被触发。在所有其他情况下,不会触发更改事件。不是$('#inputGroupFile01').val(''); 也不是this.form.reset();
【问题讨论】:
-
如果您的 HTML 中有一个表单,只需添加重置按钮,没有 javascript 或 jQuery 的简单标签,Reset
-
@Ma'mounothman 来自链接页面的评论:您通常应该避免在表单中包含重置按钮。它们很少有用,反而更有可能让误点击它们的用户感到沮丧(通常是在尝试点击提交按钮时)。
-
我很确定您在问题中遗漏了一些东西,更改事件似乎确实触发了
-
@AnuragSrivastava,请注意,谢谢,另一方面,功能在那里,所以我们作为开发人员的工作就是以编程方式使用 reset(),比循环/选择所有元素更好。
-
@freedomn-m,你成就了我的一天。追加 change() 将解决我的问题
标签: javascript jquery bootstrap-4