by clicking on one button invoke two other buttons

荒凉一梦 提交于 2019-12-24 18:21:40

问题


I would like by clicking on a button to "activate" the clicking of 2 other buttons. I've put this ccjs in the onclick event:

document.getElementById("#{id:button28}").click();document.getElementById("#{id:button29}").click();

But then only button 28 gets clicked ! Then I tried putting this part1 of the code under the onclick event and part2 under the onmousedown event. Then I have to click 2 times this button before he actually does the job.

the code so far:

<xp:button value="Save" id="button26">
<xp:eventHandler event="onclick" submit="false">
    <xp:this.script>
        <xp:executeClientScript>
    <xp:this.script><![CDATA[document.getElementById("#{id:button29}").click();
    ></xp:this.script>
        </xp:executeClientScript>
    </xp:this.script></xp:eventHandler></xp:button><xp:button id="button29" value="button29">
    <xp:eventHandler
    event="onclick" submit="true" refreshMode="partial"
    id="eventHandler21" refreshId="outsidePanel5">
        <xp:this.action>
            <xp:actionGroup>
                <xp:executeScript>
                <xp:this.script><![CDATA[#{javascript:sessionScope.put("test","");// and some more code}]]>
                </xp:this.script>
                </xp:executeScript>
            </xp:actionGroup>
        </xp:this.action>
    <xp:this.onComplete><![CDATA[document.getElementById("#{id:button28}").click();]]></xp:this.onComplete>
    </xp:eventHandler></xp:button><xp:button value="button28" id="button28">
    <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="outsideMogelijkheid">
        <xp:this.action>
            <xp:executeScript
                    script="#{javascript://some code}">
            </xp:executeScript>
        </xp:this.action>
    </xp:eventHandler></xp:button>

回答1:


If these buttons execute SSJS code you need to add the code to click on the second button in the onComplete event of the first button.

http://xpagesblog.com/XPagesHome.nsf/Entry.xsp?documentId=0574D334CB03EACF852578CB00667F54

Addition Working example of onComplete not that it only works with partial refresh

<xp:button value="Save" id="button26">
<xp:eventHandler event="onclick" submit="false">
    <xp:this.script><![CDATA[document.getElementById("#{id:button29}").click()]]>
</xp:this.script>
    </xp:eventHandler></xp:button>
<xp:button id="button29" value="button29">

<xp:eventHandler event="onclick" submit="true"
    refreshMode="partial" refreshId="computedField1">

    <xp:this.action><![CDATA[#{javascript:viewScope.test="Almost Done"}]]>
</xp:this.action>
    <xp:this.onComplete>
<![CDATA[document.getElementById("#{id:button28}").click();]]>
</xp:this.onComplete>
    <xp:this.onError><![CDATA[alert("error")]]></xp:this.onError>
</xp:eventHandler></xp:button>

<xp:button value="button28" id="button28">
    <xp:eventHandler event="onclick" submit="true" 
refreshMode="partial" refreshId="computedField1">

        <xp:this.script><![CDATA[alert("Button 28")]]></xp:this.script>
        <xp:this.action>
            <xp:executeScript>
                <xp:this.script><![CDATA[#{javascript:viewScope.test="Done"}]]>
</xp:this.script>
            </xp:executeScript>
        </xp:this.action></xp:eventHandler>
</xp:button>
<xp:br></xp:br>
<xp:text escape="true" id="computedField1" value="#{viewScope.test}"></xp:text>



回答2:


If you want to run the SSJS in another button, you can actually call the eventHandler programmatically rather than triggering the button in CSJS. This will also perform better, because you're not switching between CSJS and SSJS all the time. The following code should work:

var eventHandler:com.ibm.xsp.component.xp.XspEventHandler = getComponent("button29");
eventHandler.getAction().invoke(facesContext, null);
eventHandler = getComponent("button28");
eventHandler.getAction().invoke(facesContext, null);


来源:https://stackoverflow.com/questions/12069883/by-clicking-on-one-button-invoke-two-other-buttons

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!