私のウィケットアプリケーションでは、フォームに3つのチェックボックスがあります:
add(new CheckBox("1").setOutputMarkupId(true));
add(new CheckBox("2").setOutputMarkupId(true));
add(new CheckBox("3").setOutputMarkupId(true));
フォームには、チェックボックスの選択を解除する動作も含まれています
add(new AjaxEventBehavior("onclick") {
private static final long serialVersionUID = 1L;
@Override
protected void onEvent(AjaxRequestTarget target) {
List<Component> components = new ArrayList<Component>();
if (target.getLastFocusedElementId() != null) {
if (target.getLastFocusedElementId().equals("1")) {
components.add(get("2"));
components.add(get("3"));
} else if (target.getLastFocusedElementId().equals("2")) {
components.add(get("1"));
} else if (target.getLastFocusedElementId().equals("3")) {
components.add(get("1"));
}
for (Component component : components) {
component.setDefaultModelObject(null);
target.add(component);
}
}
}
});
これは mozilla ブラウザーではうまく機能しますが、chrome では機能しません。これをクロムでも動作させるにはどうすれば改善できますか?
アップデート
問題は次のとおりです。
target.getLastFocusedElementId()
mozillaではこれは私が望むものを返しますが、クロムでは常にnullを返しますが、なぜかわからない
更新 2
Google Chrome にはフォーカス要素にバグがあります:
だから私は他の方法でこれを行う必要があります