React-tags: Потеря автофокуса при вводе после удаления тега

Созданный на 6 мая 2020  ·  10Комментарии  ·  Источник: i-like-robots/react-tags

Ожидаемое поведение

Я ожидаю, что все будет сосредоточено на вводе даже после удаления тега

Текущее поведение

Ввод теряет фокус после удаления добавленного тега

Действия по воспроизведению

Шаги по воспроизведению проблемы:

  1. введите страну
  2. выберите страну из раскрывающегося списка
  3. удалить страну из тега
  4. ввод теряет автофокус

Скриншоты

1
2
3

Ваше окружение

  • ОС: Windows 10.0
  • Браузер: Chrome [Версия 81.0.4044.138 (Официальная сборка) (64-разрядная версия)]
  • Версия компонента: [5.12.1]
  • Версия React: [16.13.0]

Все 10 Комментарий

удалить страну из тега

Нажав клавишу Backspace, когда поле ввода пусто, или щелкнув тег?

извините, это нажатием кнопки закрытия на теге. Когда я удаляю его с помощью Backspace, есть автофокус

Спасибо за дополнительную информацию @ekinalcar.

Поскольку элемент с фокусом уничтожается, я предполагаю, что фокус по умолчанию вернется к окну ... не идеально! Я подозреваю, что нам нужно будет записать, откуда пришел фокус, когда приземлился на тег, и вернуть его туда при удалении.

Спасибо за быстрый ответ @ i-like-robots

В событии удаления с обратным пространством, даже если ввод пустой (без тегов), фокус находится на том же входе, а не на окне

Привет, @ekinalcar, мне удалось воссоздать это. Я обнаружил, что с помощью мыши и Firefox, и Safari работают одинаково, как и ожидалось, но в Chrome фокус курсора иногда теряется, даже если событие щелчка фиксируется.

Однако фокус всегда теряется при использовании клавиатуры и «щелчке» по тегам нажатием клавиши пробела, что, конечно, не предназначено. Надеюсь, это исправит периодически возникающую проблему в Chrome.

Есть ли способ сделать это необязательным ? У меня возникает нежелательное поведение при удалении тега, поэтому я не всегда хочу, чтобы ввод возвращал фокус.

Не могли бы вы описать свой вариант использования @krozett ? Я уверен, что есть решения лучше, чем я реализовал в настоящее время, но я думаю, что важно, чтобы курсор двигался _ где-нибудь_ полезным. Возможно, я мог бы добавить условие, которое позволило бы перемещать курсор в обратном вызове handleDelete/onDelete .

@ i-like-robots Может быть, было бы лучше, если бы я создал для него билет запроса функции. Но в основном у меня есть поведение, специфичное для мобильных устройств, когда пользователь нажимает на ввод, и я использую оверлей, чтобы скрыть все, кроме этого ввода, чтобы освободить место на экране для клавиатуры и предложений автозаполнения. Когда ни один элемент не сфокусирован, видна вся форма. Но при удалении тега я не хочу, чтобы ввод автоматически фокусировался, поскольку, скорее всего, пользователь хотел только удалить тег и не намеревается продолжать вводить текст в поле поиска. Автофокус заставляет ввод вернуться в режим «доминирования экрана», чего я не хочу. Только намеренный фокус должен делать это.

В этом есть смысл @krozett - возможно, лучшим решением было бы записать, откуда пришел фокус (на focusin ), и вернуть туда курсор при удалении тега 🤔

@ i-like-robots В любом случае, я уверен, что v6 скоро выйдет, так что, возможно, мне стоит сначала посмотреть на его поведение, чтобы увидеть, будет ли какой-либо из его обработчиков событий делать то, что мне нужно. 😉

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

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

jraack picture jraack  ·  6Комментарии

filippofilip95 picture filippofilip95  ·  4Комментарии

luciemac picture luciemac  ·  7Комментарии

famouspotatoes picture famouspotatoes  ·  5Комментарии

williamsidewalk picture williamsidewalk  ·  4Комментарии