关闭Bootstrap Modal在表单上提交

Lar*_*ara 29 html javascript forms jquery twitter-bootstrap

我有一个包含表单的Bootstrap Modal.Modal还包含,提交和取消按钮.现在根据我的要求,在提交按钮单击模态,表单正在成功提交但模态未关闭..这是我的HTML ..

<div class="modal fade" id="StudentModal" tabindex="-1" role="dialog" aria-labelledby="StudentModalLabel" aria-hidden="true" data-backdrop="static">
   <div class="modal-dialog">
      <div class="modal-content">
         <form action="~/GetStudent" class="form-horizontal" role="form" method="post" id="frmStudent">
            <div class="modal-footer">
               <div class="pull-right">
                  <button type="submit" class="btn btn-success"><i class="glyphicon glyphicon-ok"></i> Save</button>
                  <button type="button" class="btn btn-danger" data-dismiss="modal"><i class="glyphicon glyphicon-remove"></i> Close</button>
               </div>
            </div>
         </form>
      </div>
   </div>
Run Code Online (Sandbox Code Playgroud)

怎么做..请帮帮我..谢谢..

Muh*_*had 23

使用该代码

 $('#button').submit(function(e) {
    e.preventDefault();
    // Coding
    $('#IDModal').modal('toggle'); //or  $('#IDModal').modal('hide');
    return false;
});
Run Code Online (Sandbox Code Playgroud)

  • 这几乎是正确的,但不要**从事件处理函数返回false,因为它与在事件对象上调用`preventDefault()`和`stopPropagation()`相同.调用`preventDefault()`会停止提交,这不是预期的结果.这也是数据解析attrib不起作用的原因 - 引导模式js添加的事件也会对事件调用preventDefault(). (3认同)
  • #button应该是表单的id,而不是按钮(参见[link](https://developer.mozilla.org/en-US/docs/Web/Events/submit)顶部的注释) - 如果使用按钮上的事件,使用click事件. (3认同)
  • 还可以考虑调用 `.modal('hide');` 而不是 'toggle',否则如果您的表单也可以在模态不可见的情况下提交,则在触​​发提交事件时将显示模态。 (2认同)

mar*_*n87 14

在"关闭"按钮上添加相同的属性:

data-dismiss="modal"
Run Code Online (Sandbox Code Playgroud)

例如

<button type="submit" class="btn btn-success" data-dismiss="modal"><i class="glyphicon glyphicon-ok"></i> Save</button>
Run Code Online (Sandbox Code Playgroud)

如果您愿意,也可以使用jQuery:

$('#frmStudent').submit(function() {

    // submission stuff

    $('#StudentModal').modal('hide');
    return false;
});
Run Code Online (Sandbox Code Playgroud)

  • 这确实关闭了模态对话框,但在我的情况下不会触发要提交的模态中的内部表单. (22认同)
  • 只需在按钮上添加数据关闭就不会提交. (11认同)
  • 添加数据关闭会导致模式在提交之前关闭并阻止提交.所以这并没有解决问题.这里给出的jQuery与接受的答案相同 - 如果读取所有注释 - 但这更易于复制. (2认同)

小智 10

给id提交按钮

<button id="btnSave" type="submit" class="btn btn-success"><i class="glyphicon glyphicon-trash"></i> Save</button>

$('#btnSave').click(function() {
   $('#StudentModal').modal('hide');
});
Run Code Online (Sandbox Code Playgroud)

你忘了关闭最后一个div.

</div>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


小智 6

如果有人不想使用 jQuery,在 Bootsrap 5.0 中,您现在应该使用data-bs-dismmis,例如:

<button type="submit" class="btn btn-success" data-bs-dismiss="modal">SUBMIT</button>
Run Code Online (Sandbox Code Playgroud)

或者

<button type="button" class="btn btn-success" onclick="submitForm()" data-bs-dismiss="modal">SUBMIT</button>
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以使用以下两个选项之一:

1)在提交按钮上添加数据关闭即

<button type="submit" class="btn btn-success" data-dismiss="modal"><i class="glyphicon glyphicon-ok"></i> Save</button>
Run Code Online (Sandbox Code Playgroud)

2)用JS做

$('#frmStudent').submit(function() {
    $('#StudentModal').modal('hide');
});
Run Code Online (Sandbox Code Playgroud)

  • 在提交时添加 data-dismiss 确实会关闭模式,但它会阻止将对象保存到数据库。 (2认同)

Abh*_*bhi 5

我使这段代码工作正常,但是一旦表单提交模型按钮不再打开模型,就会说 e.preventdefault 不是一个函数。

在提交表单上触发的任何事件上使用以下代码

                $('.modal').removeClass('in');
                $('.modal').attr("aria-hidden","true");
                $('.modal').css("display", "none");
                $('.modal-backdrop').remove();
                $('body').removeClass('modal-open');
Run Code Online (Sandbox Code Playgroud)

你可以让这段代码更短..

如果有人找到 e.preventdefault 的解决方案,请告诉我们