【问题标题】:How to disable popup dismiss while form is submitting如何在表单提交时禁用弹出关闭
【发布时间】:2016-04-18 07:04:58
【问题描述】:

我有一个 id #registerModal 的弹出窗口,其中我有一个表单,当表单提交发生时,我不希望用户关闭弹出窗口,直到显示成功消息,表单提交完成通过 AJAX。

$('form#register-form').on('submit', function(event) {
  $.ajax({
    type: "POST",
    url: "/user-register",
    data: {
      'first_name': first_name,
      'second_name': second_name,
      'email': email
    },
    $("#registerModal").modal({
      "backdrop": "static"
    });
    success: function(data) {}
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<a data-toggle="modal" data-target="#registerModal" class="register">GET STARTED</a>


<div id="registerModal" class="modal fade modal-white" tabindex="-1" role="dialog" aria-labelledby="registerModalLabel">
  <div class="modal-dialog" style="margin-top: 10%;">
    <div class="modal-content">
      <div class="modal-body">
        <div id="register-success-message" class="alert alert-success fade in">
          <a href="#" id="register-alert-close" class="close" data-dismiss="modal" aria-label="close" title="close">×</a>
          <strong>Success!</strong> An activation mail has been sent.
        </div>
        <div class="row" id="register-modal-form">
          <div class="col-sm-8 col-sm-offset-2 register-heading">
            <center> REGISTER </center>
          </div>
          <form method="POST" action="/user-register" id="register-form">
            <div id="status-message"></div>
            <div class="col-sm-10 col-sm-offset-1 regsiter-form-fields">
              <input type="text" class="form-control register-fields" id="first_name" name="first_name" placeholder="First Name" autocomplete="off" />
              <span id="first-name-register-error-message" class="register-error-message"></span>
            </div>
            <div class="col-sm-10 col-sm-offset-1 regsiter-form-fields">
              <input type="text" class="form-control register-fields" id="second_name" name="second_name" placeholder="Last Name" autocomplete="off" />
              <span id="second-name-register-error-message" class="register-error-message"></span>
            </div>
            <div class="col-sm-10 col-sm-offset-1 regsiter-form-fields">
              <input type="text" class="form-control register-fields" id="register_email" name="email" placeholder="Email" autocomplete="off" />
              <span id="email-register-error-message" class="register-error-message"></span>
            </div>
            <div class="col-sm-10 col-sm-offset-1 regsiter-form-fields">
              <input type="hidden" name="_token" value="{{ csrf_token() }}">
              <input name="register-submit" type="submit" id="register-form-submit" class="btn btn-danger pull-left btn-lg register-button" value="CONTINUE" />
            </div>
          </form>
        </div>
      </div>
    </div>
  </div>
</div>

我在提交时包含了静态属性,但它不起作用...

【问题讨论】:

  • 能把基本的html modal 结构包含进去吗?
  • @RinoRaj 我已经包含了 html...
  • 您可以尝试将submit 按钮更改为&lt;button&gt; 并将事件处理程序$('form#register-form').on('submit', function(event) { 更改为button click

标签: javascript jquery ajax forms twitter-bootstrap


【解决方案1】:

如何隐藏 jquery modal 关闭按钮并在 ajax 触发成功事件后显示它

$('form#register-form').on('submit', function(event) {
    $.ajax({
        type: "POST",
        url: "/user-register",
        data: {
            'first_name': first_name,
            'second_name': second_name,
            'email': email
        },
        $("#registerModal").modal({
            "backdrop": "static"
        });
        $(".ui-dialog-titlebar-close").hide();
        success: function(data) {
            $(".ui-dialog-titlebar-close").show();
        }
    });
});

【讨论】:

  • 那么用户可以通过什么方式关闭弹窗?
  • 通过点击外部,一旦用户填写了表单并点击了提交。提交功能发生在后端。那时,弹出窗口不应在点击外部时关闭..
  • 您是否尝试从选项中删除引号 - .modal({backdrop: "static", keyboard: false });
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-31
  • 1970-01-01
  • 1970-01-01
  • 2012-01-26
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
相关资源
最近更新 更多