Javascript 执行btn.click()
我有一个xPage,上面添加了一个按钮。单击此按钮时,会执行一些服务器端脚本 我想要的是,每当用户单击菜单中的链接时,就会执行此代码。因此,我在link元素上创建了以下代码Javascript 执行btn.click(),javascript,xpages,Javascript,Xpages,我有一个xPage,上面添加了一个按钮。单击此按钮时,会执行一些服务器端脚本 我想要的是,每当用户单击菜单中的链接时,就会执行此代码。因此,我在link元素上创建了以下代码 <xp:link loaded="true" escape="true" id="lnkTab" value="#{javascript:rootNode.getFrame();}"> <xp:this.text><![CDATA
<xp:link loaded="true" escape="true" id="lnkTab"
value="#{javascript:rootNode.getFrame();}">
<xp:this.text><![CDATA[#{javascript://return rootNode.getLabel();
return rootNode.getLabel();}]]></xp:this.text>
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:sessionScope.selectedPage = rootNode;}]]></xp:this.action>
<xp:this.script><![CDATA[
var currentPage = "#{javascript: return this.getParent().getValue();}";
var currentPageLocation = window.location.href;
var lastSlash = currentPageLocation.lastIndexOf("/");
var page = currentPageLocation.substring(lastSlash+1,currentPageLocation.length);
if(page == "UserProfile.xsp" && currentPage != "UserProfile.xsp"){
if(isProfileChanged()){
debugger;
var retValue = confirm("U heeft wijzigingen niet opgeslagen.\nWilt u deze alsnog opslaan?");
if(retValue){
sendRedirectSignal("#{javascript: rootNode.getFrame();}","#{id:txtRedirectSignal}","#{id:btnProfileSave}");
thisEvent.preventDefault();
thisEvent.stopPropagation();
sendRedirectSignal("#{javascript: rootNode.getFrame();}","#{id:txtRedirectSignal}","#{id:btnProfileSave}");
return false;
}
}}]]></xp:this.script>
</xp:eventHandler>
</xp:link>
如您所见,代码使用dojo检索按钮并发出click事件。出于某种原因,这根本不起作用。没有对按钮执行任何事件处理程序。当我在firebug中执行btn时,代码执行得非常完美。有人能在这个问题上帮忙吗?为什么代码没有执行,我如何才能让它工作。这是我对以下问题的回答的重复: 跟我重复:客户端始终优先于服务器端:-) xp:link控件的value属性导致根本不执行服务器端事件。当点击链接时,它只是执行一个HTTP访问相关资源
因此,如果删除value属性,则应触发onclick服务器端事件。这是我对以下问题的回答的重复: 跟我重复:客户端始终优先于服务器端:-) xp:link控件的value属性导致根本不执行服务器端事件。当点击链接时,它只是执行一个HTTP访问相关资源
因此,如果删除value属性,则应触发onclick服务器端事件。您可以简化此操作。为什么要把代码放在一个按钮中,让代码在一个链接中点击那个按钮?两个行动方针:
- 移除按钮(如果您不需要它),并将代码放入链接中
- 如果您也需要按钮:将按钮中的代码移动到SSJS函数中,并从链接和按钮调用该函数。xp:link也可以执行SSJS
- 移除按钮(如果您不需要它),并将代码放入链接中
- 如果您也需要按钮:将按钮中的代码移动到SSJS函数中,并从链接和按钮调用该函数。xp:link也可以执行SSJS
- 你可以简化它。为什么要把代码放在一个按钮中,让代码在一个链接中点击那个按钮?两个行动方针:
function sendRedirectSignal(strPage,redirectId,btnId){
var hidRedirect = dojo.byId(redirectId)
var btnProfile = dojo.byId(btnId);
if(hidRedirect!=null && btnProfile != null){
console.log(btnProfile);
hidRedirect.value = strPage;
console.log(btnProfile.click());
}
}