2012-06-20 1 views
0

У меня есть форма GWT с текстовым полем и отключена кнопка «сохранить». , когда пользователь начинает набирать что-либо в текстовом поле, я хочу включить кнопку «Сохранить». то одним нажатием кнопки «Сохранить» следует вызвать некоторый код save().Обработчик GWT click игнорируется, если обработчик изменения значения добавляется в текстовое поле

Я добавил

  1. ClickHandler на кнопку Сохранить.
  2. «Обработчик изменения стоимости» в текст Поле для обновления модели подкладки. К сожалению, он вызывается только , когда поле теряет FOCUS, поэтому мне также пришлось добавить:
  3. KeyPressHandler to текстовое поле для включения кнопки «Сохранить», когда пользователь начинает вводить текст.

, поэтому я начинаю печатать в текстовом поле (я вижу, что KeyPressHandler вызывается и кнопка активируется), затем я нажимаю «save».

В данный момент GWT запускает событие «потерянное фокус», и мой обработчик изменения стоимости активируется, и модель поддержки обновляется. но событие для ClickHandler потеряно! это просто не вызывается. Мне нужно снова нажать кнопку «Сохранить», а затем сохранить(), наконец, вызывается.

ответ

0

Обработчик ValueChange предназначен для обнаружения изменения значения поля.

Изменение значения не регистрируется до тех пор, пока вы не укажете жест в текстовое поле, которое вы заполнили в поле, и хотите зарегистрировать изменение. Я считаю, что жест будет либо CR, либо потеря внимания.

OTOH, обработчик, который вы, возможно, захотите прикрепить к текстовому полю, является обработчиком клавиатуры (http://google-web-toolkit.googlecode.com/svn/javadoc/2.4/com/google/gwt/event/dom/client/KeyUpHandler.html), так что на каждой клавиатуре ваш код мог проверить значение только что введенного ключа.

Но почему вы хотите это сделать? Почему бы не остаться с обработчиком изменения стоимости? Вы должны перемещать мышь от текстового поля в любом случае, чтобы достичь кнопки мыши.

+0

проблема заключается в том, что когда я перемещаю мышь, чтобы нажимать кнопку «сохранить», выполняется обработчик изменений событий, но событие «нажатие кнопки» теряется. поэтому модель получает обновление, но мне нужно дважды нажать «сохранить». не имеет смысла. Я уверен, что я не использую всех этих слушателей правильно (моя первая попытка gwt) ... – Alex

Смежные вопросы