将焦点设置为选项卡式表格上选项卡的第一个字段

时间:2013-01-18 15:23:01

标签: xpages

当用户点击选项卡表的选项卡时,我希望能够将焦点设置为该选项卡上的第一个字段。

每个标签似乎只有一个事件鼠标onclick。所以我尝试将以下代码放在该选项卡的onclick事件中。

var f = dojo.byId('#{id:NotInvitedMsg}');
if (f != null)
   f.focus();

但是当我点击选项卡时没有任何反应。我的意思是什么。无法再选择该选项卡,并且永远不会执行该脚本。

有什么方法吗?

3 个答案:

答案 0 :(得分:1)

尝试使用HTML5自动对焦属性:

<xp:inputText id="field1" value="#{document.Field1}">
    <xp:this.attrs>
        <xp:attr name="autofocus" value="autofocus"></xp:attr>
    </xp:this.attrs>
</xp:inputText>

有一点需要注意:除Internet Explorer外,所有主流浏览器都支持自动对焦属性。

答案 1 :(得分:1)

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:tabbedPanel id="tabbedPanel1">
        <xp:tabPanel label="New Tab" id="tabPanel1">
            <xp:panel>
                <xp:inputText id="inputText1"></xp:inputText>
                <xp:eventHandler event="onClientLoad" submit="false">
                    <xp:this.script><![CDATA[var edit = dojo.byId("#{id:inputText1}");
if (edit) {
    edit.focus()
}]]></xp:this.script>
                </xp:eventHandler>
            </xp:panel>
        </xp:tabPanel>
        <xp:tabPanel label="New Tab2" id="tabPanel2">
            <xp:panel>
                <xp:inputText id="inputText2"></xp:inputText>
                <xp:eventHandler event="onClientLoad" submit="false">
                    <xp:this.script><![CDATA[var edit = dojo.byId("#{id:inputText2}");
if (edit) {
    edit.focus()
}]]></xp:this.script>
                </xp:eventHandler>
            </xp:panel>
        </xp:tabPanel>
    </xp:tabbedPanel>
</xp:view>

这是有效的代码(在Chrome和IE9上测试过)。它使用我几天前看到的简单技巧(我想向原作者道歉,我无法找到原始帖子):在XP / CC级别创建onClientLoad事件,并将源视图中的事件处理程序移动到小组正文。像魅力一样......

答案 2 :(得分:0)

这可能不是你想要的,但也许它可以提供一些帮助..

链接 - &gt; How can I set focus to Edit Box inside repeat control?