2017-01-27 2 views
0

Я пытаюсь убрать клавиатуру через JS в ответ на нажатие кнопки, но мне не повезло.Mobile Safari - Dismiss Keyboard с Javascript

Установка:

  1. У меня есть textarea с принимают и отменяют кнопки, привязанных к нему.
  2. После нажатия кнопки «Отмена» мой объект будет вызывать textAreaElement.blur().
  3. Затем он удаляет кнопки приема и отмены.

Ожидаемое:

  • поле теряет фокус (визуально, так и в противном случае).
  • Клавиатура отклоняется.

Actual:

  • поле, кажется, теряет фокус (визуально, не отображается курсор), и программно.
  • Клавиатура по-прежнему представлена.

Я уже пробовал обычный Google, но все они, похоже, думают, что при вызове blur на сфокусированный элемент должно быть достаточно. Один пользователь даже предложил позвонить $('input').blur(), чтобы все поля были размыты, но это, похоже, не повлияло.

ответ

0

... и я просто понял, почему это происходит.

Я упомянул, что удалял кнопки «Принять» и «Отмена» для этого поля. В частности, имело место следующее:

  1. Звоните textAreaElement.blur().
  2. Анимировать кнопки исчезают.
  3. По завершении анимации, buttons.remove().

Когда кнопка «Отмена» получила щелчок, она приобрела фокус (клавиатура оставалась активной). Когда впоследствии была удалена кнопка «Отмена» в обратном вызове завершения анимации, фокус был применен к предыдущему настраиваемому элементу, который является textarea.

Так что я имел эффект делает:

textarea.blur() # Уже не имеет фокус. buttons.remove() # Удаляет кнопки, возвращает их фокус обратно в текстовое поле.

Решение было вместо:

  1. анимировать кнопки исчезают.
  2. Ждите завершения анимации, buttons.remove().
  3. Звоните textAreaElement.blur().
Смежные вопросы