0

テキストフィールドと無効な「保存」ボタンを備えたGWTフォームがあります。ユーザーがテキストフィールドに何かを入力し始めたら、「保存」ボタンを有効にしたいと思います。次に、「保存」ボタンを 1 回クリックすると、いくつかの save() コードが呼び出されます。

追加した

  1. ClickHandler を [保存] ボタンに移動します。
  2. 「Value change handler」をテキスト フィールドに入力して、バッキング モデルを更新します。残念ながら、フィールドが FOCUS を失ったときにのみ呼び出されるため、以下も追加する必要がありました。
  3. KeyPressHandler をテキスト フィールドに追加して、ユーザーが入力を開始したときに [保存] ボタンを有効にします。

そのため、テキスト フィールドに入力を開始し (KeyPressHandler が呼び出され、Button が有効になっていることがわかります)、[保存] をクリックします。

この時点で、GWT が「フォーカス ロスト」イベントを発生させ、Value Change Handler が呼び出され、バッキング モデルが更新されます。しかし、ClickHandler のイベントは失われます! それは単に呼び出されていません。「保存」ボタンをもう一度クリックする必要があり、最後に save() が呼び出されます。

4

1 に答える 1

0

ValueChange ハンドラは、フィールドの値の変化を検出するためのものです。

フィールドへの入力が完了し、変更を登録するテキスト フィールドにジェスチャを提供するまで、値の変更は登録されません。ジェスチャーは、CR またはフォーカスの喪失のいずれかになると思います。

OTOH、テキスト フィールドにアタッチするハンドラーはキーアップ ハンドラー ( http://google-web-toolkit.googlecode.com/svn/javadoc/2.4/com/google/gwt/event/dom/client ) です。 /KeyUpHandler.html )、キーアップのたびにコードが入力されたばかりのキーの値をチェックできるようにします。

しかし、なぜあなたはそれをしたいのですか?値変更ハンドラーにとどまらないのはなぜですか? マウス ボタンに到達するには、とにかくマウスをテキスト フィールドから移動する必要があります。

于 2012-06-21T00:34:27.980 に答える