Программный выбор () для номера типа ввода не работает в iOS - PullRequest
0 голосов
/ 25 апреля 2019

Если у меня есть элемент input с типом number, пытающийся программно вызвать функцию select(), он не будет работать в Safari mobile.

При запуске этого кода

const el = document.querySelector(`#${FIELD1} input`);
if (el) {
 setTimeout(() => {
    el.focus();
    el.select();
    el.setSelectionRange(0, 9999);
  }, 100);
}

Фокус будет работать на всех платформах, но выбор будет работать только в Chrome.

Есть ли официальная информация об этой ошибке? Есть ли способ обойти это?

Я попробовал el.setSelectionRange(0,99), как предлагалось в старых сообщениях, но, похоже, он больше не работает (и не должен, поскольку это не указано в спецификации W3C для этого элемента).

PS: Я использую Preact.

РЕДАКТИРОВАТЬ: проблема сосредоточена на iOS, на самом деле она работает на рабочем столе Safari.

Я создал минимальное воспроизведение: https://codesandbox.io/s/q86m6kv01q, пожалуйста, попробуйте перейти на вашем устройстве к: https://q86m6kv01q.codesandbox.io/

1 Ответ

1 голос
/ 26 апреля 2019

Для вызова пользовательского интерфейса выбора на iOS требуется жест пользователя. Это сделано для того, чтобы невозможно было запускать системный интерфейс случайным образом (например, при загрузке страницы).

...