当用户单击选项卡式表格的选项卡时,我希望能够将焦点设置到该选项卡上的第一个字段。
每个选项卡似乎只有一个事件鼠标 onclick。因此,我尝试将以下代码放在该选项卡的一个 onclick 事件中。
var f = dojo.byId('#{id:NotInvitedMsg}');
if (f != null)
f.focus();
但是,当我单击选项卡时,什么也没有发生。我什么意思都没有。无法再选择选项卡,并且永远不会执行脚本。
有什么办法吗?
当用户单击选项卡式表格的选项卡时,我希望能够将焦点设置到该选项卡上的第一个字段。
每个选项卡似乎只有一个事件鼠标 onclick。因此,我尝试将以下代码放在该选项卡的一个 onclick 事件中。
var f = dojo.byId('#{id:NotInvitedMsg}');
if (f != null)
f.focus();
但是,当我单击选项卡时,什么也没有发生。我什么意思都没有。无法再选择选项卡,并且永远不会执行脚本。
有什么办法吗?
试试 HTML5 Autofocus 属性:
<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。
<?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 事件,并将源视图中的事件处理程序移动到面板主体。像魅力一样工作...
这可能不是您正在寻找的,但也许它可以提供一些帮助..
链接 - > 如何将焦点设置到重复控件内的编辑框?