フォームを送信した後、選択したコンポーネント ID を選択してフォーカスしようとしています (ajax 呼び出し)。
<script>
var myFunc = function() {
document.getElementById('form:#{bean.componentId}').focus();
document.getElementById('form:#{bean.componentId}').select();
};
$(document).ready(function() {
myFunc();
});
</script>
<h:form id="form">
<h:commandButton action="#{bean.save}" onclick="return myFunc();" ...>
<f:ajax execute="@form" render="@form"/>
</h:commandButton>
...
</h:form>
このソリューションは機能していますが、問題は<f:ajax>AFTER と呼ばれるonclickため、コンポーネントの選択後にフォームがレンダリングされ、フォーカスがクリアされます。
フォームがレンダリングされた後に関数を呼び出すにはどうすればよいですか?
更新:(たとえば試しました)
- add
onevent="myFunc();"tof:ajax=> ページの更新につながります onevent="myFunc()"に追加=>属性f:ajaxと同じ動作onclick- 次にattr
f:ajaxで。onevent=>相変わらず
update2 (どのように動作するか):
- 送信ボタンは ajax と呼ばれる
- フォームは必要に応じてクリーンアップされます
- 適切なフィールドがフォーカスされています (ユーザーが選択した要因によって異なります)