「KeyPress」イベントがナビゲーション キーを押しても呼び出されない場合の IE では、FF では「KeyPress」イベントが発生します。これを停止する方法。次のようにKeyPressイベントでGxt 'TextField'を使用しています
firstNameField.addListener(Events.KeyPress, getKeyPressListener());
private Listener<FieldEvent> getKeyPressListener(){
return new Listener<FieldEvent>() {
public void handleEvent(FieldEvent be) {
char key = getChar(be.getEvent());
if (!((key+"").matches("^[A-Za-z \\'\\-\\&]+$"))) {
be.stopEvent();
}
}
// needed due to GWT 2.1 changes
private native char getChar(NativeEvent e) /*-{
return e.which || e.charCode || e.keyCode || 0;
}-*/;
};
}
ユーザーが「A-Za-z」、「-」、「&」のみを入力できる正規表現を設定しましたが、これらの値以外はユーザーが入力できなくなります。
このコードは、IE では正常に動作します。ナビゲーション キーを押しても「KeyPress」イベントは発生しませんが、FF に関しては、キーを押すたびに「KeyPress」イベントが発生します。したがって、「FF」を「IE」と同様に機能させるには