选择文件后如何自动提交上传表单?

ram*_*am1 145 html javascript

我有一个简单的文件上传表单.如何在选择文件后自动提交?我不希望用户必须单击"提交"按钮.

Ale*_*pin 184

您可以submitonchange输入文件时简单地调用表单的方法.

document.getElementById("file").onchange = function() {
    document.getElementById("form").submit();
};
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/cwvc4/73/

  • 这适用于Safari,因为jQuery解决方案似乎不起作用.奇怪? (4认同)
  • @henrywright:是的。在 jQuery 中,`Submit()` 调用会触发 jQuery `submit` 事件,但不会触发底层表单 `submit()`。你当然可以使用 `$('form')[0].submit()` 来通过 jQuery 命中 DOM 元素 (2认同)

sla*_*dan 54

只需告诉file-input在任何更改时自动提交表单:

<form action="http://example.com">
    <input type="file" onchange="form.submit()" />
</form>
Run Code Online (Sandbox Code Playgroud)

此解决方案的优点:

  • 没有ids的工作.如果你在一个html页面中有多个表单,它会让生活更轻松.
  • 原生 javascript,没有jQuery或类似的要求.
  • 代码 html-tags内.如果您检查html,您将立即看到它的行为.

此解决方案的工作方式如下

  • onchange每当value修改时,使输入元素执行以下脚本
  • form 引用该输入元素所属的表单
  • submit() 导致表单将所有数据发送到URL,如中所述 action


Sam*_*ich 46

使用jQuery:

$('#file').change(function() {
  $('#target').submit();
});
Run Code Online (Sandbox Code Playgroud)


Ale*_*.K. 29

jquery onchange.change()会帮助你.

或者在带有.submit()事件的javascript 中:

<form action="upload.php" method="post" enctype="multipart/form-data">
     <input type="file" name="filename" onchange="javascript:this.form.submit();">
</form>
Run Code Online (Sandbox Code Playgroud)


小智 9

最短的解决方案是

<input type="file" name="file" onchange="javascript:document.getElementById('form').submit();" />
Run Code Online (Sandbox Code Playgroud)

  • `onchange="form.submit()"` 怎么样?:) (3认同)
  • 怎么样`onchange ="this.form.submit()"` (2认同)

小智 5

<form id="thisForm" enctype='multipart/form-data'>    
  <input type="file" name="file" id="file">
</form>

<script>
$(document).on('ready', function(){
  $('#file').on('change', function(){
    $('#thisForm').submit();
  });
});
</script>
Run Code Online (Sandbox Code Playgroud)


Soj*_*tin 5

如果您已经在使用 jQuery simple:

<input type="file" onChange="$(this).closest('form').submit()"/>
Run Code Online (Sandbox Code Playgroud)


sig*_*igi 5

这是我的图像上传解决方案,当用户选择文件时。

HTML部分:

<form enctype="multipart/form-data" id="img_form" method="post">
    <input id="img_input" type="file" name="image" accept="image/*">
</form>
Run Code Online (Sandbox Code Playgroud)

JavaScript:

document.getElementById('img_input').onchange = function () {
upload();
};
function upload() {
    var upload = document.getElementById('img_input');
    var image = upload.files[0];
    $.ajax({
      url:"/foo/bar/uploadPic",
      type: "POST",
      data: new FormData($('#img_form')[0]),
      contentType:false,
      cache: false,
      processData:false,
      success:function (msg) {}
      });
};
Run Code Online (Sandbox Code Playgroud)