GWT: создание текстового виджета для настраиваемого ввода данных - PullRequest
0 голосов
/ 03 октября 2010

Я пытаюсь реализовать своего рода виджет "управляемой типизации" для ввода данных, в котором текстовый ввод пользователя строго контролируется и фильтруется.Когда пользователь вводит определенный символ, мне нужно перехватить и отфильтровать его перед отображением в виджете.Представьте, если хотите, оболочку Unix, встроенную в веб-приложение;это то, что я пытаюсь реализовать.Я попробовал два подхода.

В первом я расширяю TextArea и добавляю KeyPressHandler для фильтрации символов.Это работает, но предоставляемая браузером коррекция орфографии совершенно неуместна, и я не вижу, как ее отключить.Я пробовал:

DOM.setElementProperty (textArea.getElement (), "spellcheck", "false");

Но, похоже, это не имеет никакого эффекта-Я все еще получаю красные подчеркивания над «опечатками».

Во втором подходе я использую FocusWidget для получения событий KeyPress и отдельный виджет Label или HTML для представления отфильтрованных символов обратноПользователь.Это позволяет избежать проблемы исправления орфографии, но, поскольку FocusWidget не является TextArea, браузер стремится перехватить определенные напечатанные символы для внутреннего использования;Например, FireFox будет использовать символ «/», чтобы начать «Быстрый поиск» на странице, а нажатие Backspace загрузит предыдущую веб-страницу.

Есть ли лучший способ выполнить то, что я пытаюсь сделать

Ответы [ 2 ]

2 голосов
/ 04 октября 2010

Вы можете просто использовать event.preventDefault() в событиях нажатия клавиш, чтобы избежать такого поведения браузера.Иначе, может быть, гибрид двух подходов?Имейте скрытый TextArea с фокусом, принимая ключевые события, а затем публикуйте напечатанные символы в отдельном Label.

1 голос
/ 17 января 2011

Для этого не существует специального метода GWT в TextBox, но эта простая строка кода GWT устраняет проблему для Chrome (для других браузеров YMMV - это может зависеть от того, насколько полно они реализуют HTML5), устанавливая атрибут на базовыйэлемент ввода:

myTextBox.getElement().setAttribute("spellCheck", "false");

Возможно, этот атрибут является относительно новой функцией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...