如何从Bootstrap 4输入文件中清除任何其他先前选择的文件

Pathros

我有一个包含使用Bootstrap 4实现输入文件的表单。此输入文件无法立即使用,因为它需要Javascript才能按预期工作:用户单击“浏览文件”按钮,将打开一个窗口,用户选择他们的文件,单击打开/选择,文件名最终显示在输入字段上。

<form id="my_form" name="my_form" method="post" action="/action" enctype="multipart/form-data">
   <div class="input-group" id="div_input">
      <div class="custom-file">
         <input type="file" accept=".pdf" class="custom-file-input" id="myInputGroup" name="userfile" aria-describedby="btnUpload">
         <label class="custom-file-label" for="myInputGroup" data-browse="Browse files" id="input_label_identificacion">Select a file</label>
      </div>
      <div class="input-group-append" id="divBtnUpload">
         <button class="btn btn-outline-info" type="submit" value="submitFile" id="btnUpload" title="Upload your file" disabled>Upload</button>
      </div>
   </div>
</form>

这是使其工作的javascript文件:

$('#myInputGroup').on('change',function(e){
    {{--//get the file name--}}
    var fileName = e.target.files[0].name;
    {{--replace the "Choose a file" label--}}
    $(this).next('.custom-file-label').html(fileName);
    
    enableUploadButton(inputIdentificacionId,btnIdentificacionId);
    
    document.getElementById('my_form').addEventListener('submit', function(evt) {
        evt.preventDefault();
        $('#'+btnIdentificacionId).prop("disabled",true);
        upload(this.action,'userfile',e.target.files[0]);
    }, {once: true});
});

我已经实现了一个javascript按钮“上传文件”,用户单击该按钮即可上传文件。到现在为止还挺好。

我看到的问题是,如果用户浏览了一个文件,将其选中,然后如果用户再次单击“浏览文件”按钮,则上次选择的文件将被发送两次,或者至少是用户选择一个文件的次数。文件。

因此,我想到了在用户浏览文件时清除输入文件。到目前为止,这是我在javascript中尝试过的内容:

$('#myInputGroup').on('click',function (e){
   document.getElementById('inputGroup_solicitud').value= null;
   //console.log('User is browsing ...');
   //console.log(this.files);
   inputGroup_solicitud.value='';//My attempt to clear the input but it doesn't work
   e.target.files=null;
   this.files=null;
});

但是,问题仍然在发生。如果用户再次单击并选择任何文件,则上载功能会将上次选择的文件发送到服务器两次,或者至少发送用户单击“浏览按钮”并选择文件的次数。

关于可能重复的问题的注意事项 此答案不能帮助我解决我的问题,因为问题实际上是,每次用户浏览文件时都会添加“ addEventListener()”。这个细节在其他问题中没有解释。

如何清除输入文件以防止发送多个文件?

星期五

每次更改事件触发时,您都将添加一个新的事件侦听器。因此,在用户单击“提交”时,将触发多个事件侦听器:每次浏览文件时都会触发一个。这些中的每一个都上载文件,因此导致您的问题。

要修复它,您需要移动代码块:

document.getElementById('my_form').addEventListener('submit' 
...

在封闭的更改处理程序之外。您将需要在两个范围之外的var来在两个事件处理程序之间共享文件。像这样(未经测试!):

// Both event handler can access this var
var file;

$('#myInputGroup').on('change',function(e){
    var fileName = e.target.files[0].name;
    $(this).next('.custom-file-label').html(fileName);
    enableUploadButton(inputIdentificacionId,btnIdentificacionId);
    // Store the file to be uploaded
    file = e.target.files[0];
});
    
document.getElementById('my_form').addEventListener('submit', function(evt) {
    evt.preventDefault();
    $('#'+btnIdentificacionId).prop("disabled",true);
    // Retrieve and upload your file
    upload(this.action,'userfile',file);
}, {once: true});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何编写仅在任务文件中的任何其他先前任务已更改时才运行的Ansible角色任务?

来自分类Dev

如何从文件中仅取出与任何文件(两个或多个文件)中的任何其他单词都不匹配的唯一单词?

来自分类Dev

如何加载和编辑richtexbox中的.docx/.doc文件或winforms中的任何其他控件,文档格式正确?

来自分类Dev

如何使用PHP或任何其他语言将javascript变量值保存在文件中?

来自分类Dev

如何检测URL位置是否在此页面以及同一域的任何其他子文件夹中

来自分类Dev

如何将渲染的表格数据导出为 pdf 文件或 reactjs 中的任何其他格式

来自分类Dev

Python - 如何获取可执行程序以弹出 Windows 文件浏览器供用户选择 Excel 文件或任何其他文档?

来自分类Dev

取消“文件输入”对话框,刷新Jasny Bootstrap文件输入中先前选择的文件

来自分类Dev

在markdown文件(* .md)或任何其他文本中提及如何工作?

来自分类Dev

如何生成并保存到SummaryReport或任何其他JMeter报告文件

来自分类Dev

如何使用Windows中的任何命令行(例如,Python或任何其他基于Windows的语言/软件)来增加和减少文件中的单词

来自分类Dev

如何删除或禁用日期选择器或其他输入中先前选择的值?

来自分类Dev

如何删除或禁用日期选择器或其他输入中先前选择的值?

来自分类Dev

如何根据其他文件中的 id 选择文件的子集?

来自分类Dev

如何只更改外国批处理文件中的一个特定行,而不影响任何其他行?

来自分类Dev

如何在执行任何其他命令之前执行“清除” bash命令?

来自分类Dev

如何在没有“离开页面”对话框或任何其他提示的情况下下载文件?

来自分类Dev

如何将timbre.js缓冲区导出为.wav或任何其他音频文件格式?

来自分类Dev

如何使用os.walk或任何其他替代方法通过自然名称顺序递归遍历文件夹?

来自分类Dev

krajee Bootstrap文件输入-如何使用uploadAsync为每个文件发送其他数据:true

来自分类Dev

如何在其他脚本的任何其他函数中调用包含参数的函数?

来自分类Dev

成功提交数据后,如何清除文件输入中的文件选择?

来自分类Dev

jQuery-如何确保用户在执行任何其他操作之前输入文本?

来自分类Dev

如何检查输入是否为没有任何其他字符的有效整数?

来自分类Dev

如何删除与“用户|文件夹|其他”中的任何模式匹配的文件或目录?

来自分类Dev

如何将%或任何其他内容放在.htaccess中的RewriteRule中

来自分类Dev

在不使用任何其他库的情况下,有人将如何应对用Python读取.pdf文件的元数据的挑战?

来自分类Dev

如何基于Powershell中的用户输入将文件移动到其他文件夹

来自分类Dev

在Tkinter中运行无限循环时如何使用关闭(X)或任何其他按钮

Related 相关文章

  1. 1

    如何编写仅在任务文件中的任何其他先前任务已更改时才运行的Ansible角色任务?

  2. 2

    如何从文件中仅取出与任何文件(两个或多个文件)中的任何其他单词都不匹配的唯一单词?

  3. 3

    如何加载和编辑richtexbox中的.docx/.doc文件或winforms中的任何其他控件,文档格式正确?

  4. 4

    如何使用PHP或任何其他语言将javascript变量值保存在文件中?

  5. 5

    如何检测URL位置是否在此页面以及同一域的任何其他子文件夹中

  6. 6

    如何将渲染的表格数据导出为 pdf 文件或 reactjs 中的任何其他格式

  7. 7

    Python - 如何获取可执行程序以弹出 Windows 文件浏览器供用户选择 Excel 文件或任何其他文档?

  8. 8

    取消“文件输入”对话框,刷新Jasny Bootstrap文件输入中先前选择的文件

  9. 9

    在markdown文件(* .md)或任何其他文本中提及如何工作?

  10. 10

    如何生成并保存到SummaryReport或任何其他JMeter报告文件

  11. 11

    如何使用Windows中的任何命令行(例如,Python或任何其他基于Windows的语言/软件)来增加和减少文件中的单词

  12. 12

    如何删除或禁用日期选择器或其他输入中先前选择的值?

  13. 13

    如何删除或禁用日期选择器或其他输入中先前选择的值?

  14. 14

    如何根据其他文件中的 id 选择文件的子集?

  15. 15

    如何只更改外国批处理文件中的一个特定行,而不影响任何其他行?

  16. 16

    如何在执行任何其他命令之前执行“清除” bash命令?

  17. 17

    如何在没有“离开页面”对话框或任何其他提示的情况下下载文件?

  18. 18

    如何将timbre.js缓冲区导出为.wav或任何其他音频文件格式?

  19. 19

    如何使用os.walk或任何其他替代方法通过自然名称顺序递归遍历文件夹?

  20. 20

    krajee Bootstrap文件输入-如何使用uploadAsync为每个文件发送其他数据:true

  21. 21

    如何在其他脚本的任何其他函数中调用包含参数的函数?

  22. 22

    成功提交数据后,如何清除文件输入中的文件选择?

  23. 23

    jQuery-如何确保用户在执行任何其他操作之前输入文本?

  24. 24

    如何检查输入是否为没有任何其他字符的有效整数?

  25. 25

    如何删除与“用户|文件夹|其他”中的任何模式匹配的文件或目录?

  26. 26

    如何将%或任何其他内容放在.htaccess中的RewriteRule中

  27. 27

    在不使用任何其他库的情况下,有人将如何应对用Python读取.pdf文件的元数据的挑战?

  28. 28

    如何基于Powershell中的用户输入将文件移动到其他文件夹

  29. 29

    在Tkinter中运行无限循环时如何使用关闭(X)或任何其他按钮

热门标签

归档