JQuery 更改检查状态时未调用 Wicket Checkbox onUpdate
Wicket Checkbox onUpdate not being called on JQuery changing check state
我有一个数据 table,我添加了一个面板,其中的一个单元格中包含一个复选框。我有另一个面板有一个复选框,我用它来 select 数据 table 中的所有复选框。 Select全部由JQuery完成,JQuery在下面的代码中。当我的 JQuery Select All 复选框被选中时,如何调用 onclick 或 onchange 事件?我试过使用下面的 AjaxCheckBox,但没有调用该事件。
private static List<CheckBox> checkBoxes = new ArrayList<CheckBox>();
private static class ActionsPanel extends Panel {
public ActionsPanel(String id, IModel<WorkOrderCustomer> model, final String uuid ) {
super( id );
AjaxCheckBox checkBox = new AjaxCheckBox("checkbox", Model.of(Boolean.FALSE)) {
private static final long serialVersionUID = 1L;
@Override
protected void onComponentTag(ComponentTag tag) {
super.onComponentTag(tag);
tag.append("class", uuid, " ");
}
@Override
protected void onUpdate(AjaxRequestTarget target) {
if( getModelObject() == true ) {
checkBoxes.add(this);
} else {
checkBoxes.remove(this);
}
}
};
add( checkBox );
}
}
private static class ActivityPanel extends Panel {
private final String selectCheckboxJS = "if($(this).attr('checked') == 'checked') {var val=true;} else {var val=false;}$('." +
uuid + "').each(function() { $(this).attr('checked', val); });"
private static final long serialVersionUID = 1L;
@Inject
private Dao dao;
private DropDownChoice<String> activities;
public ActivityPanel(String id, final String selectCheckboxJS, FilterForm form) {
addActivitySwitchPanel(selectCheckboxJS, form);
}
private void addActivitySwitchPanel(final String selectCheckboxJS, FilterForm form) {
CheckBox checkAll = new CheckBox("checkAll");
checkAll.add(new ChangeActivitySearchBehavior() {
@Override
public void onComponentTag(Component component, ComponentTag tag) {
tag.put("onclick", selectCheckboxJS);
}
});
SubmitLink changeActivityLink = new SubmitLink("activityLink", form);
add( checkAll );
add( changeActivityLink );
}
}
您可以在复选框上 $(this).trigger('click')
而不是仅仅更改 checked
属性的值。
另请查看 org.apache.wicket.markup.html.form.CheckGroupSelector
组件。
我有一个数据 table,我添加了一个面板,其中的一个单元格中包含一个复选框。我有另一个面板有一个复选框,我用它来 select 数据 table 中的所有复选框。 Select全部由JQuery完成,JQuery在下面的代码中。当我的 JQuery Select All 复选框被选中时,如何调用 onclick 或 onchange 事件?我试过使用下面的 AjaxCheckBox,但没有调用该事件。
private static List<CheckBox> checkBoxes = new ArrayList<CheckBox>();
private static class ActionsPanel extends Panel {
public ActionsPanel(String id, IModel<WorkOrderCustomer> model, final String uuid ) {
super( id );
AjaxCheckBox checkBox = new AjaxCheckBox("checkbox", Model.of(Boolean.FALSE)) {
private static final long serialVersionUID = 1L;
@Override
protected void onComponentTag(ComponentTag tag) {
super.onComponentTag(tag);
tag.append("class", uuid, " ");
}
@Override
protected void onUpdate(AjaxRequestTarget target) {
if( getModelObject() == true ) {
checkBoxes.add(this);
} else {
checkBoxes.remove(this);
}
}
};
add( checkBox );
}
}
private static class ActivityPanel extends Panel {
private final String selectCheckboxJS = "if($(this).attr('checked') == 'checked') {var val=true;} else {var val=false;}$('." +
uuid + "').each(function() { $(this).attr('checked', val); });"
private static final long serialVersionUID = 1L;
@Inject
private Dao dao;
private DropDownChoice<String> activities;
public ActivityPanel(String id, final String selectCheckboxJS, FilterForm form) {
addActivitySwitchPanel(selectCheckboxJS, form);
}
private void addActivitySwitchPanel(final String selectCheckboxJS, FilterForm form) {
CheckBox checkAll = new CheckBox("checkAll");
checkAll.add(new ChangeActivitySearchBehavior() {
@Override
public void onComponentTag(Component component, ComponentTag tag) {
tag.put("onclick", selectCheckboxJS);
}
});
SubmitLink changeActivityLink = new SubmitLink("activityLink", form);
add( checkAll );
add( changeActivityLink );
}
}
您可以在复选框上 $(this).trigger('click')
而不是仅仅更改 checked
属性的值。
另请查看 org.apache.wicket.markup.html.form.CheckGroupSelector
组件。