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

时间:2018-07-09 17:22:21

标签: javascript jquery twitter-bootstrap xpages bootstrap-modal

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

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

所以我尝试了..

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

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

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

因此,我还尝试了(破解,修改)2秒的setTimeout以允许模式首先显示,但还是没有运气。

..问题是..

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

        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>