jQuery + GWT设置复选框状态

时间:2012-03-12 16:32:59

标签: jquery gwt mobile input checkbox

使用UI:Binder。

复选框实现如下:

<div data-role="fieldcontain">
<fieldset data-role="controlgroup">
<input type="checkbox" ui:field="uniqueID" class="custom" />
<label for="uniqueID"><ui:text from="{res.text}"></ui:text></label>
</fieldset>
</div>

checkboxNewsletter.setId("uniqueID");,因为很遗憾,您无法同时设置ui:字段和ID。

我尝试使用

设置复选框
@UiField InputElement checkbox;
checkbox.setChecked(true);

哪个不起作用。所以我尝试JSNI直接访问jQuery-JS:

public static native void setCheckBoxStatus(String id, Boolean isChecked)/*-{
        $wnd.jQuery('input[name='+id+']').attr('checked', isChecked);
}-*/;

......没有更好的效果。

任何人都知道如何解决这个问题? jQuery似乎覆盖了GWT复选框;生成的HTML有点怪异,似乎包含两个checkbox-elements。删除jQuery覆盖时,您可以看到原始(并且已正确检查)元素。

2 个答案:

答案 0 :(得分:2)

混合使用jQuery和GWT是一个坏主意!使用GWT,您应该主要使用针对GWT DOM API的Java代码。你是对的,你不能通过UIBinder在元素上设置ID和ui:field,但这不是你问题的根本原因。

您为视图提供的代码段无法编译。您需要使用注释指定一个字段,如下所示:

@UiField
CheckBox checkbox;

然后在方法体内设置检查状态:

// setValue sets the checked state, true = checked, false = unchecked.
checkbox.setValue(true);

答案 1 :(得分:2)

当您使用GWT和jQuery时,您应该使用GWTQuery(http://code.google.com/p/gwtquery/),它包含了jQuery的功能,您可以直接在您的jQuery中访问它java代码。但是这对UiBinder没有帮助。

这是您使用GWT UiBInder定义复选框的方式:

<g:CheckBox ui:field="uniqueID"></g:CheckBox>
你在uiBinder xml文件中的

@UiField 
CheckBox uniqueID; 

你的代码behing。

如果您正在使用eclipse,则可以使用设计器拖放布局中的不同元素并定义不同的元素。本文介绍了UiBinder的不同功能。

PS:如果您希望在复选时检查复选框,可以写下:<g:CheckBox checked="true" ui:field="uniqueID"></g:CheckBox>