bootstrap模态框点击空白处模态框不消失、监听模态框打开还是关闭

本文介绍了如何使用Bootstrap模态框插件的事件监听功能,包括模态框的打开、关闭等状态变化事件,并提供了一个完整的示例代码。

1.在div上添加

aria-hidden="true"  

  • 属性 aria-hidden="true" 用于保持模态窗口不可见,直到触发器被触发为止(比如点击在相关的按钮上)。

data-show="false"  

  • data-show当初始化时显示模态框。

2.添加js

$('#myModal').modal({backdrop: 'static', keyboard: true});

backdrop: 'static' 指定一个静态的背景,当用户点击模态框外部时不会关闭模态框。
keyboard: true  当按下 escape 键时关闭模态框,设置为 false 时则按键无效


总结:其前面的div添加的属性是为了让模态框一开始就是隐藏的




监听模态框打开还是关闭
事件 描述 实例
show.bs.moda l 在调用 show 方法后触发。
$('#identifier').on('show.bs.modal', function () {
  // 执行一些动作...
})
shown.bs.modal 当模态框对用户可见时触发(将等待 CSS 过渡效果完成)。
$('#identifier').on('shown.bs.modal', function () {
  // 执行一些动作...
})
hide.bs.modal 当调用 hide 实例方法时触发。
$('#identifier').on('hide.bs.modal', function () {
  // 执行一些动作...
})
hidden.bs.modal 当模态框完全对用户隐藏时触发。
$('#identifier').on('hidden.bs.modal', function () {
  // 执行一些动作...
})


1.通过hide.bs.modal来监听模态框关闭

$('#myModal').on('hide.bs.modal', function (){

})


2.通过shown.bs.modal监听模态框是打开的

$('#myModal').on("shown.bs.modal", function() {

})



demo:

<!DOCTYPE html>
<html>
<head>
   <title>Bootstrap 实例 - 模态框(Modal)插件事件</title>
   <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css">
   <!--------- jQuery ---------->
<script src="http://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
<!-- <script src="js/jquery-1.10.2.min.js"></script>  -->

<!-- Bootstrap 核心 JavaScript 文件 -->
<script src="http://cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</head>
<body>
 
<h2>模态框(Modal)插件事件</h2>
 
<!-- 按钮触发模态框 -->
<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
   开始演示模态框
</button>
 
<!-- 模态框(Modal) -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" 
   aria-labelledby="myModalLabel" aria-hidden="true">
   <div class="modal-dialog">
      <div class="modal-content">
         <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" 
               aria-hidden="true">×
            </button>
            <h4 class="modal-title" id="myModalLabel">
               模态框(Modal)标题
            </h4>
         </div>
         <div class="modal-body">
            点击关闭按钮检查事件功能。
         </div>
         <div class="modal-footer">
            <button type="button" class="btn btn-default" 
               data-dismiss="modal">
               关闭
            </button>
            <button type="button" class="btn btn-primary">
               提交更改
            </button>
         </div>
      </div><!-- /.modal-content -->
   </div><!-- /.modal-dialog -->
</div><!-- /.modal -->


<script>
   $(function () {
$('#myModal').on('hide.bs.modal', function () {
alert('嘿,我听说您喜欢模态框...');
})

$('#myModal').on("shown.bs.modal", function() {
alert('aa');
})
   });
</script>
 
</body>
</html>


@callback( [Output(MY_MODAL, "is_open"), Output(SUCCESS_MODAL, "is_open"), Output(ERROR_MODAL, "is_open"), Output(ERROR_CONTENT, "children"), Output(OVER_RLAY, "style")], [Input(SUBMIT_BTN, "n_clicks"), Input(CUSTOM_CLOSE, "n_clicks"), Input(CLOSE_SUCCESS_MODAL, "n_clicks"), Input(CLOSE_ERROR_MODAL, "n_clicks"), Input("robot-open", "n_clicks")], [State(MY_MODAL, "is_open"), State("sn", "value"), State("ip", "value"), State("fp", "value"), State("type", "value"), State(PI_IP, "value")], prevent_initial_call=True ) def handle_modal_actions(robot_open, submit_clicks, custom_close_clicks, close_success_clicks, close_error_clicks, is_open, sn, ip, fp, device_type, pi_ip): ctx = dash.callback_context if not ctx.triggered: return [False, False, False, None] trigger_id = ctx.triggered[0]["prop_id"].split(".")[0] overlay_style = {'position': 'fixed', 'top': '0', 'left': '0', 'right': '0', 'bottom': '0', 'backgroundColor': 'rgba(0, 0, 0, 0.7)', 'zIndex': '9998'} if trigger_id.__contains__("robot-open"): return [True, False, False, None, {**overlay_style, 'display': 'none'}] if trigger_id == CUSTOM_CLOSE: return [not is_open, False, False, None, {**overlay_style, 'display': 'none'}] elif trigger_id == SUBMIT_BTN: if not all([sn, ip, fp, device_type]): return [True, False, True, dbc.Alert("Please fill in all required fields!", color="danger"), {**overlay_style, 'display': 'block'}] try: status, success = execute_combined(sn, ip, fp, device_type, pi_ip) if success: return [True, True, False, None, {**overlay_style, 'display': 'block'}] else: return [True, False, True, dbc.Alert(status, color="danger"), {**overlay_style, 'display': 'block'}] except Exception as e: return [True, False, True, dbc.Alert(f"System exception: {str(e)}", color="warning"), {**overlay_style, 'display': 'block'}] elif trigger_id == CLOSE_SUCCESS_MODAL or CLOSE_ERROR_MODAL: return [True, False, False, None, {**overlay_style, 'display': 'none'}] return [False, False, False, None, {**overlay_style, 'display': 'none'}] OVER_RLAY在点击其他空白处时也关闭
最新发布
03-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值