【问题标题】:jQuery UI dialog on top of Bootstrap modalBootstrap modal 顶部的 jQuery UI 对话框
【发布时间】:2015-10-26 13:56:57
【问题描述】:

我有一个 Bootstrap 模式,显示填充一些数据,如果数据不正确,实际上我会显示一个警报并显示在顶部。

现在我有一个新要求,创建自定义警报对话框。在表单的其他部分,没有问题,但是当我有Bootstrap模态时,如果我以正常方式显示模态,它会出现在Bootstrap模态的底部(example in this fiddle)。

我查看了其他问题,例如 thisthis,并尝试使用 z-index (example in this fiddle) 并在顶部显示对话框,但我无法点击任何地方

$(".ui-dialog").css({ 'z-index' : 1000 });    
$("#myModal").css({ 'z-index' : 0 });

我也尝试禁用模式并启用对话框但没有成功。

this answer 是否正确,如果没有更多插件,我无法做到这一点?

【问题讨论】:

  • 不确定,但这是您要找的吗? Fiddle
  • 没错!这就是我需要的!但是我不能碰css模板,只能js/jquery修改...
  • 我已经发布了一个答案,使用jquery更改z-index

标签: css twitter-bootstrap jquery-ui bootstrap-modal


【解决方案1】:

variables.less 文件中定义的引导模式窗口的默认z-index 位于1050

@zindex-modal: 1050;

因此,如果您想将 jquery-ui 对话框置于其上方,您至少必须添加一个大于模式窗口之一的 z-index 值。或者将模态窗口 z-index 更改为更低的值,但我不会那样做。

$("#btnalert").click(
  function action () {
    alert("this is an alert on top");
  }
);

$("#btndialog").click(
  function action () {
    $("#dialog").html("dialog on the back");
    $("#dialog").dialog();
    $(".ui-dialog").css({
      zIndex: '1060',
      top: '100px'
    });
    prepareDialog();
    
  }
);

function prepareDialog() {
  $("html, body").animate({ scrollTop: 0 }, "slow");
  $(".ui-dialog-titlebar").css({ background: '#F7985D' });
  $(".ui-dialog .ui-dialog-content").css({ 'text-align': 'center' });
}
.ui-dialog {
    /*z-index: 1060 !important;*/
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://code.jquery.com/ui/1.11.4/themes/ui-lightness/jquery-ui.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script>



<!-- Latest compiled JavaScript -->
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>


<!-- Trigger the modal with a button -->
<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Open Modal</button>

<!-- Modal -->
<div id="myModal" class="modal fade" role="dialog">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title">Modal Header</h4>
      </div>
      <div class="modal-body">
        <p>Some text in the modal.</p>
      </div>
      <div class="modal-footer">
        <button  class="btn btn-default" id="btnalert" >ALERT</button>
        <button  class="btn btn-default" id="btndialog" >DIALOG</button>
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
      </div>
    </div>

  </div>
</div>

<div id="dialog" hidden></div>

【讨论】:

  • 几乎可以工作了,您知道如何使对话框位置相对于模态框吗?如果您在全屏模式下运行 sn-p,它会在屏幕中居中,但我的表格很长,所以我需要相对于模态的位置...类似于警报,可能向下 100 像素...跨度>
  • 对帖子进行了编辑。在对话框中添加了top css 位置。
  • 实际上,这与模态无关,是 100px 绝对值但足够公平......原始问题已完全回答;)
【解决方案2】:

版本 1.10.0+ 开始,您可以在初始化时使用 appendTo 选项指定“附加”对话框的位置,并将其分配给您的模态 ID。不再更改 z 索引。

$("#yourDialogId").dialog({
        autoOpen: false,
        appendTo: "#yourModalId",
        modal: true,
});

【讨论】:

    【解决方案3】:

    在你的小提琴上试试这个:

    <button  class="btn btn-default" data-dismiss="modal" id="btndialog" >DIALOG</button>
    

    【讨论】:

    • 不行,如果发现无效数据我不能丢弃模态
    • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
    • @JordiCastilla 这不是调用另一个模态的选项吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 2015-10-16
    • 1970-01-01
    • 2014-03-11
    • 1970-01-01
    • 2013-10-27
    • 2012-06-29
    相关资源
    最近更新 更多