テキストフィールドと無効な「保存」ボタンを備えたGWTフォームがあります。ユーザーがテキストフィールドに何かを入力し始めたら、「保存」ボタンを有効にしたいと思います。次に、「保存」ボタンを 1 回クリックすると、いくつかの save() コードが呼び出されます。
追加した
- ClickHandler を [保存] ボタンに移動します。
- 「Value change handler」をテキスト フィールドに入力して、バッキング モデルを更新します。残念ながら、フィールドが FOCUS を失ったときにのみ呼び出されるため、以下も追加する必要がありました。
- KeyPressHandler をテキスト フィールドに追加して、ユーザーが入力を開始したときに [保存] ボタンを有効にします。
そのため、テキスト フィールドに入力を開始し (KeyPressHandler が呼び出され、Button が有効になっていることがわかります)、[保存] をクリックします。
この時点で、GWT が「フォーカス ロスト」イベントを発生させ、Value Change Handler が呼び出され、バッキング モデルが更新されます。しかし、ClickHandler のイベントは失われます! それは単に呼び出されていません。「保存」ボタンをもう一度クリックする必要があり、最後に save() が呼び出されます。