jQuery UI 对话框位于 Bootstrap 模式之上

jQuery UI dialog on top of Bootstrap modal

我有一个 Bootstrap 模态显示用于填充一些数据,如果数据不正确,实际上我会显示一个警报,它会出现在顶部。

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

我查看了其他问题,例如 this and and I've tried with z-index (example in this fiddle),对话框显示在顶部,但我无法点击任何地方

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

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

this answer 是否正确,没有更多插件我无法实现这一点?

在你的 fiddle 上试试这个:

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

variables.less 文件中定义的 bootstrap 模态 window 的默认值 z-index 位于 1050.

@zindex-modal: 1050;

因此,如果您想将 jquery-ui 对话框放在上面,您至少必须添加一个 z-index 值,该值大于模态 window。或者将模式 window 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>

1.10.0+ 版开始,您可以在初始化中使用 appendTo 选项指定 "append" 对话框的位置,并将其分配给您的模态标识。不再更改 z-indexes。

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