我正在打开bootstrap模式:
$('#myModal').modal({ remote: '/AccountsContact/ModalAssignCustomer?iACCO_KEY=' + iACCO_KEY });
我的问题是我需要从模态中读取一些值。当模态完成加载并在GUI中显示时,我想这样做。 (模态之前显示的模态中的GUI控件尚未生成)。
我知道这个事件:
$(window).on('hidden.bs.modal', function() {
$('#code').modal('hide');
alert('hidden');
});
但问题是在GUI上加载模态之前触发了事件 - 因此模态中的所有字段都没有生成,我无法从中读取。
在GUI中完全加载模态并且模态内的所有控件都可见后,有没有办法触发事件?
答案 0 :(得分:1)
您正在寻找的事件将是loaded.bs.modal
,这会在remote
数据完全加载后触发。
正如我之前的评论中所述,remote
在3.3.0中已经过折旧,在版本4.x中已完全删除。您可以使用一些jQuery简单地复制功能,我鼓励您在此处探索无数的解决方案。我的个人偏好类似于以下代码:
$('body').on('click', '[data-toggle="modal"]', function(){
$($(this).data("target") + ' .modal-dialog').removeClass('modal-lg').removeClass('modal-sm').addClass('modal-' + $(this).data("size"));
$($(this).data("target") + ' .modal-content').load($(this).attr("href"));
});
在上面的示例中,模态触发器绑定到body
,因此您可以通过DOM外部生成的元素访问它。您仍然可以使用data-toggle
并指定远程URL就像定义href
属性一样简单,但这确实会将您限制为<a>
作为触发器(尽管可以轻松修改)。
上面代码的第一件事就是删除模态上的任何大小调整类并清除任何预先存在的模态内容,因为它依赖于单个模式对话框来填充。
我还想指定应通过data-size
激活哪个大小的模式框,所以上面的代码也反映了这一点。再次......在该选项中有很多个人偏好。
答案 1 :(得分:1)
请参阅以下代码,这可能会对您有所帮助。
$(document).ready(function(){
$("#myBtn").click(function(){
$("#myModal").modal("show");
});
$("#myModal").on('shown.bs.modal', function () {
alert('The modal is fully shown.');
$(this).find('p').text("This is changed text after alert");
});
});
&#13;
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<div class="container">
<h2>Modal Events - shown.bs.modal</h2>
<!-- Trigger the modal with a button -->
<button type="button" class="btn btn-info btn-lg" id="myBtn">Open Modal</button>
<!-- Modal -->
<div class="modal fade" id="myModal" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Modal Header</h4>
</div>
<div class="modal-body">
<p>The <strong>shown.bs.modal</strong> event occurs when the modal is fully shown.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</div>
&#13;