XPages移动控件部分刷新返回菜单页
我在移动控件中有一个简单的页面。我有一个编辑框,我想做的是在编辑控件的onChange事件中部分刷新当前。基本上在编辑控件中键入一些内容-点击enter并进行部分刷新。 如果将页面返回到主菜单,则按enter键。若我在其中输入一个值并点击TAB,那个么它将按我所希望的方式工作 我正在从头开始一个新的应用程序。但我已经用一个正在生产的应用程序多次实现了这个概念。我找不到任何特殊的代码,将“陷阱”一个进入按钮。。。所以我不知道为什么这次我不能得到我想要的行为 以下是该问题的视频演示: 下面是完整的代码 谢谢你的帮助XPages移动控件部分刷新返回菜单页,xpages,xpages-extlib,Xpages,Xpages Extlib,我在移动控件中有一个简单的页面。我有一个编辑框,我想做的是在编辑控件的onChange事件中部分刷新当前。基本上在编辑控件中键入一些内容-点击enter并进行部分刷新。 如果将页面返回到主菜单,则按enter键。若我在其中输入一个值并点击TAB,那个么它将按我所希望的方式工作 我正在从头开始一个新的应用程序。但我已经用一个正在生产的应用程序多次实现了这个概念。我找不到任何特殊的代码,将“陷阱”一个进入按钮。。。所以我不知道为什么这次我不能得到我想要的行为 以下是该问题的视频演示: 下面是完整的
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex"
xmlns:xc="http://www.ibm.com/xsp/custom">
<xp:this.resources>
<xp:styleSheet href="/.ibmxspres/dojoroot/dijit/themes/tundra/tundra.css">
</xp:styleSheet>
<xp:styleSheet href="/mobile.css"></xp:styleSheet>
</xp:this.resources>
<xe:singlePageApp id="singlePageApp1"
selectedPageName="mainMenu">
<xe:djxmHeading id="djxmHeading1" label="My App"></xe:djxmHeading>
<xe:appPage id="mainMenuID" pageName="mainMenu">
<xe:djxmRoundRectList id="djxmRoundRectList1"
title="Main Menu">
<xe:djxmLineItem id="djxmLineItem9" moveTo="#container"
label="Test Page">
</xe:djxmLineItem>
</xe:djxmRoundRectList>
</xe:appPage>
<xe:appPage id="containerID" pageName="container"
resetContent="true">
<xe:djxmHeading id="djxmHeading5" label="My Page"
back="Main Menu">
</xe:djxmHeading>
<xe:djxmRoundRectList id="djxmRoundRectList2">
<xp:panel id="mainPanel">
<xp:table style="width:100.0%">
<xp:tr>
<xp:td style="width:50%"></xp:td>
<xp:td>Details</xp:td>
</xp:tr>
<xp:tr>
<xp:td>
<xp:inputText id="inputText1" styleClass="target alignVMiddle"
value="#{sessionScope.myValue}">
<xp:this.attrs>
<xp:attr name="autocorrect" value="off"></xp:attr>
<xp:attr name="placeholder" value="Tap to Scan...">
</xp:attr>
</xp:this.attrs>
<xp:eventHandler event="onchange" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:viewScope.put("test", "test");}]]></xp:this.action>
</xp:eventHandler>
</xp:inputText>
</xp:td>
<xp:td></xp:td>
</xp:tr>
</xp:table>
<xp:br></xp:br>
Current Value: 
<xp:text escape="true" id="computedField1" value="#{sessionScope.myValue}"></xp:text>
<xp:br></xp:br>
<xp:br></xp:br>
Current Time: 
<xp:text escape="true" id="computedField2" value="#{javascript:@Now();}">
<xp:this.converter>
<xp:convertDateTime type="time"></xp:convertDateTime>
</xp:this.converter>
</xp:text>
</xp:panel>
</xe:djxmRoundRectList>
</xe:appPage>
</xe:singlePageApp>
</xp:view>
细节
当前值: ;
当前时间: ;
我认为问题在于enter将尝试进行提交,提交将返回到第一页。尝试在onkeyup或down中为charcode 13添加签入,如果发现此项,则返回false。
你可能还需要做一个stopproprigate或者类似的事情。
谷歌输入密钥提交表单
从我的手机;-)
或者这篇文章 您可以这样做来强制对Enter进行部分刷新吗
<xp:inputText id="inputText1" value="#{sessionScope.myValue}">
<xp:eventHandler event="onkeypress" submit="true" refreshMode="partial" refreshId="something">
<xp:this.script><![CDATA[//partial refresh on Enter
if( thisEvent.keyCode === dojo.keys.ENTER ){
dojo.stopEvent( thisEvent );
} else {
return false;
}
]]></xp:this.script>
</xp:eventHandler>
</xp:inputText>