提交表单后显示模式对话框

Posted

技术标签:

【中文标题】提交表单后显示模式对话框【英文标题】:Show modal dialog after form submitted 【发布时间】:2015-08-20 01:55:27 【问题描述】:

我有一个提交下载文件后的表单。我想自动而不是自动下载文件..来显示模式对话框并显示下载链接。

<form name="softwareform" id="softwareform" action="../downloadlink.php" method="POST" align="left">
  <div class="input-group margin-bottom-sm">
      <span class="input-group-addon">
         <i class="fa fa-windows fa-fw"></i>
      </span>
      <input class="form-control" type="text" placeholder="Software Title" name="softtitle" id="softtitle">
  </div>

  <button type="submit" class="btn btn-primary"  >
      <i class="fa fa-cogs"></i>Download File
  </button>
</form>

在下载 link.php 中,我在使用标头处理后重定向到下载文件。 这是我要显示的模态对话框。

<div class="modal fade bs-modal-sm" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
   <div class="modal-dialog modal-sm">
      <div class="modal-content" id="dialog-download">
         <br/><br/>
         <h2>Your Download is ready.</h2>
         <hr/>
         Your Download link is here <br/>
      </div>
   </div>
</div>

如何在表单提交后显示此对话框? 提前致谢

【问题讨论】:

@Epodax 我可以从第二个表单回显下载链接,但是如何在第一个表单上触发它?谢谢 @Epodax No....我想在第一页上显示模式....不在进程页面上..我想显示而不是重定向 查看 Namit 的回答 :) 它解释了我试图比我做得更好的东西。 【参考方案1】:
$("#softwareform").submit(function(e)
    e.preventDefault();
    $.ajax(
        type : 'POST',
        data: $("#softwareform").serialize(),
        url : 'url',
        success : function(data)
            $("#download_link").html(data);
            $("#download_modal").modal("show");
        
    );
    return false;
);

<div id="download_modal" class="modal fade bs-modal-sm" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-sm">
        <div class="modal-content" id="dialog-download">
            <br/><br/><h2>Your Download is ready.</h2>
            <hr/>
             Your Download link is here<a id="download_link" target="_blank"> </a>
            <br/>
        </div>
     </div>
</div>

要显示模态,使用函数 modal("show")。

这里提交表单时,从php文件返回下载链接,它会通过jquery填充并显示模态,当用户点击该链接时,文件将被下载

还可以查看 jsfiddle:-http://jsfiddle.net/h3WDq/559/

来源:- How to open a Bootstrap modal window using jQuery?

您可以将方法更改为 POST 并使用序列化表单从表单发送数据。

【讨论】:

……感谢您的回答。我在我的表单上添加了上面的代码......还检查了你发给我的链接..但我仍然无法让它工作。在我处理我使用标题重定向的表单的 php 上......我必须在上面添加一些东西.php 文件?我还阅读了您提到的网址,但对我没有帮助... 你好,在php文件上,不要再使用redirect了,只返回需要下载的文件的url,这样如果用户点击新的url,文件就是为他下载 重点是,在第一次提交时,您处理表单信息,并将文件的下载 url 返回到前端以显示在 modal 上,然后使用该链接下载文件模态本身 我试过了……我删除了重定向,但是当我提交表单并且没有打开对话框时,它仍然会打开 downloadlink.php 另外,如果你需要表单数据,只需将方法从get改为post,并序列化表单【参考方案2】:

您需要通过 ajax 发送表单数据,然后手动打开模式。 在表单页面上

    <form name="softwareform" id="softwareform" method="POST" align="left">
    <div class="input-group margin-bottom-sm">
    <span class="input-group-addon">
     <i class="fa fa-windows fa-fw"></i>
    </span>
    <input class="form-control" type="text" placeholder="Software Title" name="softtitle" id="softtitle">
    </div>
    <a href="javascript:void(0);" onclick="submit_form()" class="btn btn-primary"  >
    <i class="fa fa-cogs"></i>Download File
    </button>
    </form> 

    <div id="download_modal" class="modal fade bs-modal-sm" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-sm">
    <div class="modal-content" id="dialog-download">
        <br/><br/><h2>Your Download is ready.</h2>
        <hr/>
         Your Download link is here<a id="download_link" target="_blank"> </a>
        <br/>
     </div>
    </div>
    </div>

    <script type="text/javascript">
         function submit_form()
           var data = $('#softwareform').serialize();
           url = 'downloadlink.php',
             $.ajax(
             method: 'POST',
             url : 'url',
             dataType:'html', //json,html you will echo on the php file
             success : function(data)
        $("#download_link").html(data);
        $("#download_modal").modal("show");
    
);
         

    </script>

【讨论】:

以上是关于提交表单后显示模式对话框的主要内容,如果未能解决你的问题,请参考以下文章

jQuery确认对话模式 - 无法成功提交表单

jQuery,MVC3:在模式对话框中提交部分视图表单

如何从 Jquery 对话框表单提交中调用父页面上的回发?

提交表单后如何使用模态重新加载页面

在 HTML 表单提交后提供文件“另存为”对话框

停止提交表单,直到在 ajax 中打开模式