2016-06-10 25 views
0

我有一個數據表,我添加了一個面板,其中包含一個單元格中的複選框。我有另一個面板有一個複選框,我用它來選擇數據表中的所有複選框。 Select All由JQuery完成,JQuery位於下面的代碼中。如何在我的JQuery Select All複選框被選中時調用onclick或onchange事件?我試過使用下面的AjaxCheckBox,但事件沒有被調用。Wicket複選框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); 
    } 
} 

回答

1

而不是僅僅改變checked屬性的值你可以$(this).trigger('click')上的複選框。

另請參閱org.apache.wicket.markup.html.form.CheckGroupSelector組件。

+0

謝謝你。我非常想知道我必須通過wickets來解決這個問題,我甚至沒有想過試試jQuery。在最初設計時,我確實考慮過GroupSelector,但由於我們構建的類沒有經過一些時髦的重新設計,因此我沒有直接處理這些複選框。 – Chris