繁体   English   中英

如何获取XPages模式以触发关闭事件

[英]How to get xpages modal to fire a close event

我有一个xpage(通过Web浏览器查看),上面有许多<xe:dialog...>控件,导致出现了引导模式对话框。

当任何对话框关闭时,我想运行一些客户端脚本。

所以我尝试了..

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

但这是行不通的,我怀疑是因为在加载xpage时,实际上没有任何具有“模态”类的元素,直到打开一个元素为止。 然后部分刷新将注入相关的HTML。

因此,我尝试在模式打开时(在xpages onShow事件中)在事件的上方运行该行,但是也没有触发。 我猜事件可能是“模式打开时但在显示之前”,这意味着元素也不会在屏幕上显示。

因此,我还尝试了(hack,hack)2秒的setTimeout,以允许模式首先显示,但仍然没有运气。

所以..问题是..

通过标准的xe:dialog控件,使用xpages引导程序模态,如何在模态关闭/隐藏时附加将运行的客户端javascript事件?

您可以使用事件委托将侦听器绑定到(不存在)模态的父元素,并在与该父元素中与.modal选择器匹配的元素上单击时触发函数。

$(document).on("hide.bs.modal", ".modal", function () {...});

我做类似的事情,在一个模式上选择一个按钮,关闭所说的模式,然后根据被点击的按钮,打开下一个模式。 除了这样做,您是否可以用相同的方式运行脚本?

        var
        currentModal = $(this);

        //click next
        currentModal.find('.btn-close').click(function(){
        currentModal.modal('hide');
        OTHER STUFF?

编辑-我的完整代码:

<script type="text/javascript">
    $("div[id^='myModal1']").each(function(){

    var
    currentModal = $(this);

    //click next
    currentModal.find('.btn-next').click(function(){
    currentModal.modal('hide');
    currentModal.closest("div[id^='myModal']").nextAll("div[id^='myModal3']").first().modal('show');
    });

    //click prev
    currentModal.find('.btn-prev').click(function(){
    currentModal.modal('hide');
    currentModal.closest("div[id^='myModal']").nextAll("div[id^='myModal2']").first().modal('show');
    });

    });
    $(window).on('load',function(){
    $('#myModal1').modal('show');
    });

</script>       

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM