У меня есть таблица данных, в которой я добавил панель, в которую помещается флажок в ячейке. У меня есть еще одна панель, которая имеет флажок, который я использую, чтобы выбрать все флажки в таблице данных. «Выбрать все» выполняется JQuery, а JQuery - в коде ниже. Как я могу получить событие onclick или onchange, которое будет вызываться, когда установлен флажок JQuery Select All? Я попытался использовать AjaxCheckBox ниже, но событие не вызывается.Калитка checkbox onUpdate не вызывается при изменении состояния проверки JQuery
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);
}
}
Спасибо за это. Я был настолько обманут, думая, что мне придется решать это через калитки, что я даже не думал о попытке jQuery. Я смотрел на GroupSelector, когда я изначально его разрабатывал, но из-за того, как мы структурировали класс, у меня не было прямой обработки этих флажков, не пропуская какой-то фанки-редизайн. – Chris