【问题标题】:Open bootstrap modal from other modal从其他模态打开引导模态
【发布时间】:2017-09-22 02:23:57
【问题描述】:

我在我的项目中使用 bootstrap 4 和 AJAX。

在有 2 个模型的页面中。在第一个模态(id='#modal-lg') 内,我有必须打开第二个模态(id='#modal') 的按钮。当我单击该按钮时,它没有打开第二个模式。它只是关闭第一个模态。如何解决这个问题?我哪里做错了?

template.html:

{# FIRST MODAL #}
<div class="modal fade" id="modal-lg">
   <div class="modal-dialog modal-lg">
      <div class="modal-content">
         <div class="modal-body">
            <button id="requirement-add-button" data-url="{% url 'project:requirement_add' %}">
               {% trans 'Add New Requirement' %}
            </button>
         </div>
      </div>
   </div>
</div>
{# FIRST MODAL #}

{# SECOND MODAL #}
<div class="modal fade" id="modal">
   <div class="modal-dialog">
      <div class="modal-content">

      </div>
    </div>
</div>
{# SECOND MODAL #}

js:

$(function () {
    var loadForm = function () {
        var btn = $(this);
        $.ajax({
            url: btn.attr("data-url"),
            type: 'get',
            dataType: 'json',
            beforeSend: function () {
                $("#modal").modal("show");
            },
            success: function (data) {
                $("#modal .modal-content").html(data.html_requirement_form);
            }
        });
    };

    var saveForm = function () {
        var form = $(this);
        $.ajax({
            url: form.attr("action"),
            data: form.serialize(),
            type: form.attr("method"),
            dataType: 'json',
            success: function (data) {
                if (data.form_is_valid) {
                    $("#requirement-table tbody").html(data.html_requirement);
                    $("#modal").modal("hide");
                }
                else {
                    $("#modal .modal-content").html(data.html_requirement_form);
                }
            }
        });
        return false;
    };

    // CREATE
    $("#requirement-add-button").click(loadForm);
    $("#modal").on("submit", ".js-requirement-add-form", saveForm);
});

【问题讨论】:

    标签: javascript jquery ajax django twitter-bootstrap


    【解决方案1】:

    不确定服务器端脚本的结果是什么(ajax 结果)。但是我做了一个示例概念验证来从第一个模态触发第二个模态。如下所示,它工作正常。

    您检查过 ajax 数据的结果吗?
    您是否尝试过console.log 或调试data.html_requirement 和/或data.html_requirement_form 的结果?

    $(function() {
      
      // open 1st modal on load
      $("#modal-lg").modal({ backdrop: "static "});
      
      $("#openFirst").on("click", function(e) {
        $("#modal-lg").modal({ backdrop: "static "});
      });
      
      $("#requirement-add-button").on("click", function(e) {
      
      	// hide 1st modal
        $("#modal-lg").modal('hide');
        
        // show 2nd modal
        $("#modal .modal-body").html("SECOND MODAL CONTENT");
        $("#modal").modal({ backdrop: "static "});
        
      });
      
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"></script>
    
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet"/>
    
    <button id="openFirst" class="btn btn-primary">OpenFirst</button>
    
    {# FIRST MODAL #}
    <div class="modal fade" id="modal-lg">
       <div class="modal-dialog modal-lg">
          <div class="modal-content">
             <div class="modal-body">
                <button id="requirement-add-button" data-url="{% url 'project:requirement_add' %}">
                   {% trans 'Add New Requirement' %}
                </button>
             </div>
          </div>
       </div>
    </div>
    {# FIRST MODAL #}
    
    {# SECOND MODAL #}
    <div class="modal fade" id="modal">
       <div class="modal-dialog">
          <div class="modal-content">
            <div class="modal-body">
            TEST 2nd MODAL HERE
            </div>
          </div>
        </div>
    </div>
    {# SECOND MODAL #}

    编辑

    添加了小提琴。 https://jsfiddle.net/sudarpochong/Lwdfourp/

    var loadForm = function (e) {
    
          var btn = $(this);
          $.ajax({
                type: 'post',
              // url: btn.attr("data-url"),
              url: '/echo/json/', // JSFIDDLE TEST URL
              data: {
                delay: 2,
                json: JSON.stringify({
                    field1: "value1",
                  html_requirement_form: "<input name='test-input' />"
                })
              },
              success: function (data) {
    
                // hide 1st modal
                        $("#modal-lg").modal('hide');
    
                // show 2nd modal and add result
                $("#modal").modal('show');
                $("#modal .modal-body").html(
                    "URL: " + btn.data("url") + "<br/>" + 
                  "CONTENT : " + data.html_requirement_form
                );
              }
          });
    
      };
    

    【讨论】:

    • 您好!我有点困惑,因为不知道如何用你的代码修改我的代码。你能再给我一个建议吗。让我尝试向您解释一下我当前的代码。当用户单击按钮 (id="requirement-add-button") 时,我想运行 loadForm 函数。此功能仅显示第二个模态和 .modal-content 块放置形式。当用户提交第二个模式时,我想保存此表单中的数据。我用我的其他模态测试了这个 ajax。它有效。
    猜你喜欢
    • 2014-06-19
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    • 2019-03-17
    • 2018-07-22
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多