GWT에 테이블을 만들고 열이 입력을 가진 셀을 포함합니다. 입력 내용의 텍스트가 바뀌면 정보를 얻고 싶습니다. 내 셀에는 render()
과 onBrowserEvent()
메서드가 오버로드됩니다. 여기 코드는 다음과 같습니다GWT의 브라우저 이벤트를 "변경"
public HourPickerCell() {
super("change", "keyup");
}
@Override
public void render(Context context, String value, SafeHtmlBuilder sb) {
if (value == null) {
return;
}
sb.appendHtmlConstant("<input class=\"hourPicker\" type=\"text\" value=\"" + value + "\"></input>");
}
@Override
public void onBrowserEvent(Context context, Element parent, String value, NativeEvent event, ValueUpdater<String> valueUpdater) {
System.out.println(event.getType());
super.onBrowserEvent(context, parent, value, event, valueUpdater);
if (event.getType().equals("change")) {
EventTarget eventTarget = event.getEventTarget();
if (!Element.is(eventTarget)) {
return;
}
if (parent.getFirstChildElement().isOrHasChild(Element.as(eventTarget))) {
InputElement input = (InputElement) parent.getFirstChild();
valueUpdater.update(input.getValue());
}
}
}
당신은 내가 change
이벤트를 잡으려고 볼 수 있듯이. 파이어 폭스와 크롬 모두 괜찮습니다. 나는 다른 셀에 입력 뭔가 및 탭을 쓸 때 나는 콘솔에서 다음과 같은 결과를 얻을 : 이벤트의
keyup keyup keyup keyup keyup keyup keyup change keyup
하나는 '변화'- 이것은 내가 필요로하는 것입니다. Unfortunatelly 인터넷 익스플로러에 난 단지가 나타납니다 변화 이벤트가 없습니다
keyup keyup keyup keyup keyup keyup keyup
. 아무도 문제가있는 곳을 말해 줄 수 있습니까? 그것을 고칠 방법이 있습니까?
'TextInputCell'을 사용하면 Internet Explorer에서'keyup' 및'keydown' 이벤트 만받습니다. 파이어 폭스와 크롬에서는 여전히 모든 것이 괜찮습니다. 나는 내 솔루션이 안전하지 않다는 것을 안다 - 나는 그것을 바꿀 것이다 : – mchrobok
'AbstractInputCell'도'blur'를 다룰 것이고,'change'는 blur에 대해 해고되기 때문에 ... –
크롬과 파이어 폭스에서 나는 그렇다. 모든 이벤트 -'keydown','keyup','change','blur','focus'. 그러나 IE는 여전히'keyup'과'keydown' 이벤트 만 생성합니다. – mchrobok