0

我在移动控件中有一个简单的页面。我有一个编辑框,我想要发生的是在编辑控件的 onChange 事件中部分刷新当前。基本上在编辑控件中输入一些东西 - 点击回车并进行部分刷新。如果将页面返回到主菜单,则发生的事情是按 Enter 键。如果我输入一个值并按 TAB,那么它会按我的意愿工作。

我正在从头开始一个新的应用程序。但我已经多次使用生产中的应用程序完成这个概念。我在代码中找不到任何会“捕获”输入按钮的特殊内容......所以我不知道为什么这次我无法获得我想要的行为。

这是该问题的视频演示:http: //traffic.libsyn.com/notesin9/SO-Question2-HB.mp4

下面是完整的代码。

谢谢你的帮助!!

<?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:&#160;
                    <xp:text escape="true" id="computedField1" value="#{sessionScope.myValue}"></xp:text>
                    <xp:br></xp:br>
                    <xp:br></xp:br>
                    Current Time:&#160;
                    <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>
4

2 回答 2

2

你能做这样的事情来强制在 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>
于 2013-04-04T20:06:15.423 回答
0

我认为问题在于 enter 会尝试提交并且提交会将您返回到第一页。尝试在 onkeyup 或 down 中为 charcode 13 添加一个检查,如果找到,则返回 false。您可能还需要做一个停止专有或类似的事情。谷歌输入密钥提交表单

从我的手机;-)

或者也许这篇文章。http://tinyurl.com/bsgy9g6

于 2013-04-04T17:57:57.497 回答