Вкладка от ввода до ввода в CellTable
У меня есть CellTable с кучей ячеек, которые отображают <input>
теги. Вкладка между входами нарушена из-за необычной обработки событий CellTable. Кажется, что вкладка вдохновляет каждую клетку finishEditing
, но это в свою очередь захватывает фокус, и фокус никогда не добирается до следующего <input>
,
Установка tabIndex для каждого входа, кажется, не влияет на поведение.
Как я могу восстановить обычную функциональность вкладок?
4 ответа
Я недавно понял это. Раздражает, но просто, когда вы найдете магию.
- Создайте новый тип ячейки для использования в вашей таблице, так как фондовый TextInputCell определяет индекс вкладки -1. В основном, делайте все, что делает TextInputCell, но не указывайте индекс табуляции в вашем шаблоне.
- Отключите навигацию клавиатуры по умолчанию на CellTable.
cellTable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED)
Это должно привести к нормальной навигации по вкладкам в CellTable.
Отключение KeyboardSelectionPolicy может работать не на всех представлениях, если вы используете какие-либо фреймворки MVP. GWT выбирает ячейку вместо поля ввода внутри ячейки.
Вот решение, которое я использовал в своих приложениях: Добавление элемента управления TAB в GWT CellTable
Решение от Ben Imp прекрасно работает, если вы не измените значение ячейки, но если вы измените значение и попытаетесь перейти с помощью табуляции на следующую ячейку, оно потеряет фокус и начнется с первого элемента представления. Я не нашел решения для этого неуместного поведения.
Для тех, кто смотрит на это в будущем и пытается выяснить, как использовать табуляцию при изменении значений, сделайте то, что предлагает Ben Imp, а затем в ваших пользовательских компонентах удалите любую ссылку на super.finishEditing. В некоторых случаях это означает переопределение finishEditing и его отсутствие.