如何在表单处理时禁用提交按钮并在完成后重新启用?

时间:2013-12-17 12:15:30

标签: javascript ajax jquery

我发现了很多像这样的问题,但没有人回答我的问题。

我有这样的HTML:

<form action="..">
  <input type="submit" value="download" />
</form>

表单生成并下载文件需要几秒钟。

如何在处理表单时禁用提交按钮并在完成后重新启用?我知道如何禁用它,但是如何捕获表单已完成处理?

我的解决方案是用手动ajax调用替换表单提交,如:

$('form').on('submit', function() {
  disableButton();
  $.get(form_action, function() {
    enableButton()
    // how to force browser to download a file ?
  });
  return false;
});

所以我有两个解决方案,两个都很糟糕。

  1. 一个是抓住点击或提交活动,但我不知道什么时候 表格已完成
  2. 两个是手动ajax调用,它不允许我下载文件

1 个答案:

答案 0 :(得分:0)

我可以要求下载文件你有额外的ULR吗?与表单操作URL不同。

如果您可以创建新的URL来下载文件,而不是直接将字节写入ajax响应, 那么也许我们可以使用iFrame下载文件。

所以解决方案应该是: 1使用ajax发送文件下载发布请求。    - &GT;在服务器端创建文件

2服务器端完成后,返回目标文件的地址。

3在success方法中,使用文件URL创建新的iFrame。    - &GT;在这里,如果内容类型(MIME类型)正确,浏览器将显示下载diaglog。

在服务器端,我们需要一些空间来保存文件和删除文件的过程。

我之前没有这样做过......只是一个建议。 :P