あなたのコードはSSJSとCSJSのミックスです...... ...
var vNextFocus = viewScope.vsNextFocus;
if(vNextFocus == "CustomerName") {
XSP.getElementById("#{id:CustomerName}").focus();
}
if(vNextFocus == "PONbr") {
XSP.getElementById("#{id:PONbr}").focus();
}
その他、各種あります。
onClientLoad
イベントをXPageに追加してください。
サーバ側のクライアントIDを
#{javascript: ...get client id on server side...}
と計算してください。
結果を文字列としてCSJSコードXSP.getElementById("...").focus()
に入れます。
このようにして、viewScope.vsNextFocusで設定されたフィールドがフォーカスを取得します。
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:eventHandler
event="onClientLoad"
submit="false">
<xp:this.script><![CDATA[
XSP.getElementById("#{javascript:
try {
getComponent(viewScope.vsNextFocus).getClientId(facesContext);
} catch(e) {
getComponent('inputText1').getClientId(facesContext);
}
}").focus();
]]></xp:this.script>
</xp:eventHandler>
... your controls ...
</xp:view>
ただ、viewScope.vsNextFocusが設定されていない場合、コードのデフォルトは「inputText1」です。
一部のリフレッシュは私のxpageでは機能しません。したがって、完全なリフレッシュをすべて使用しています。最初のカップルでは、ページの領域が表示されるようになっています。部分リフレッシュがうまくいかない理由はわかりません。投稿したコードはCSJSコードで動作しますか? –
OK。私は自分の答えを完全に更新しました。それが今あなたのために働くことを願っています。 –
クヌート、私は十分にあなたに感謝することはできません。私はとても多くのことを試みましたが、おそらくフィールドに集中し、そのフォーカスを異なる時に変えようとすると、5日以上かかることがありました。あなたは私のアプリを見て喜んで私に提案をしますか?部分的なリフレッシュは、いくつかのエラーウィンドウをすばやく表示してから消えます。私はこのエラーを過去に投稿しました。また、あなたが投稿したコードは、二重引用符が正しく閉じられていないという警告を表示しますか? –