XPages 事件 onStart 和 onComplete 结合 dojo.connect
XPages events onStart and onComplete in conjunction with dojo.connect
我想将 xp:eventHandler
事件 onStart
和 onComplete
与 dojo.connect
结合使用。
看看这段代码:
<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[
dojo.connect(dojo.byId("#{id:btnSubmit}"), "onclick", callbackOnClick);
dojo.connect(dojo.byId("#{id:btnSubmit}"), "onComplete", callbackOnComplete);
function callbackOnClick() {
alert("onclick works!!!");
}
function callbackOnComplete() {
alert("onComplete works!!!");
} ]]></xp:this.value>
</xp:scriptBlock>
<xp:button value="Submit" id="btnSubmit">
<xp:eventHandler event="onclick" submit="true" refreshMode="norefresh">
<xp:this.action><![CDATA[#{javascript:// do something on server side}]]></xp:this.action>
<!-- <xp:this.onComplete><![CDATA[alert("oncomplete");]]></xp:this.onComplete>-->
</xp:eventHandler>
</xp:button>
dojo.connect
非常适合 onclick
-Event 但它不适用于 onComplete
-Event?
提前感谢您的回答。
onclick
是真正的浏览器事件(可以与dojo连接),oncomplete
事件仅由XPages的XSP对象提供。
查看生成的 HTML 代码(取消注释您的示例的 onComplete 事件)时,您可以看到它的代码已转换为字符串(倒数第二个参数):
XSP.attachPartial("view:_id1:_id2", "view:_id1:btnSubmit", null, "onclick", function(){}, 2, "@none", null, "alert\u0028\u0022oncomplete\u0022\u0029;", null);
此字符串在 XSP._partialRefresh 方法完成时计算。
这就是为什么你不能在这里使用 dojo.connect
。
我不明白您为什么需要使用 dojo.connect 将函数附加到 onclick 和 onComplete 事件。
只需将函数callbackOnClick和callbackOnComplete放在xp:eventHandler对应的方法中即可。
我想将 xp:eventHandler
事件 onStart
和 onComplete
与 dojo.connect
结合使用。
看看这段代码:
<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[
dojo.connect(dojo.byId("#{id:btnSubmit}"), "onclick", callbackOnClick);
dojo.connect(dojo.byId("#{id:btnSubmit}"), "onComplete", callbackOnComplete);
function callbackOnClick() {
alert("onclick works!!!");
}
function callbackOnComplete() {
alert("onComplete works!!!");
} ]]></xp:this.value>
</xp:scriptBlock>
<xp:button value="Submit" id="btnSubmit">
<xp:eventHandler event="onclick" submit="true" refreshMode="norefresh">
<xp:this.action><![CDATA[#{javascript:// do something on server side}]]></xp:this.action>
<!-- <xp:this.onComplete><![CDATA[alert("oncomplete");]]></xp:this.onComplete>-->
</xp:eventHandler>
</xp:button>
dojo.connect
非常适合 onclick
-Event 但它不适用于 onComplete
-Event?
提前感谢您的回答。
onclick
是真正的浏览器事件(可以与dojo连接),oncomplete
事件仅由XPages的XSP对象提供。
查看生成的 HTML 代码(取消注释您的示例的 onComplete 事件)时,您可以看到它的代码已转换为字符串(倒数第二个参数):
XSP.attachPartial("view:_id1:_id2", "view:_id1:btnSubmit", null, "onclick", function(){}, 2, "@none", null, "alert\u0028\u0022oncomplete\u0022\u0029;", null);
此字符串在 XSP._partialRefresh 方法完成时计算。
这就是为什么你不能在这里使用 dojo.connect
。
我不明白您为什么需要使用 dojo.connect 将函数附加到 onclick 和 onComplete 事件。
只需将函数callbackOnClick和callbackOnComplete放在xp:eventHandler对应的方法中即可。