1

ユーザーがタブ付きテーブルのタブをクリックすると、そのタブの最初のフィールドにフォーカスを設定できるようにしたいと考えています。

各タブには、イベント mouse onclick が 1 つしかないようです。そこで、そのタブの onclick イベントの 1 つに次のコードを配置してみました。

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

しかし、タブをクリックしても何も起こりません。そして、私は何も意味しません。タブは選択できなくなり、スクリプトは実行されません。

これを回避する方法はありますか?

4

3 に答える 3

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イベントを作成し、ソースビューのイベントハンドラーをに移動しますパネル本体。魅力のように機能します...

于 2013-01-23T13:51:33.810 に答える
1

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>

1 つの注意点: autofocus 属性は、Internet Explorer を除くすべての主要なブラウザーでサポートされています。

于 2013-01-18T21:36:47.693 に答える
0

これはあなたが探しているものと正確に一致しないかもしれませんが、多分それはいくつかの助けになるかもしれません。

リンク-> リピートコントロール内の編集ボックスにフォーカスを設定するにはどうすればよいですか?

于 2013-01-22T09:17:23.470 に答える