#javascript #html #input #mobile-safari
#javascript #HTML #ввод #мобильный-safari
Вопрос:
У меня есть элемент ввода type=’text’, который в iOS Safari переходит в состояние сбоя, так что элемент ввода выглядит сфокусированным и отправляет события ввода, но не обновляет значение поля; новые символы не отображаются при вводе пользователем. типы. На веб-сайте, который я создаю, я запускаю это состояние после изменения размера ** сфокусированного элемента ввода текста ***. Я создал jsfiddle, который надежно воспроизводит ошибку:
<input id='ipt' type='text' style='width:250px;height40px;'/>
<script>
var ipt = document.getElementById('ipt');
ipt.addEventListener("keyup", onkeyup, false);
function onkeyup(e){
ipt.style.width = '100px';
ipt.removeEventListener("keyup", onkeyup, false);
}
</script>
Чтобы воспроизвести ошибку:
- Открыть http://jsfiddle.net/55dth/embedded/result в iOS Safari
- Сфокусируйте элемент ввода нажатием
- Увеличьте масштаб, чтобы показать всю ширину ввода (необходимо для запуска ошибки)
- Введите что-нибудь
Я хотел бы понять, почему он попадает в это состояние с ошибками и как я мог бы этого избежать. Это может быть связано с нахождением в iframe и настройками документа. Я должен быть в iframe, и мне нужно изменить ширину текстового поля.
Или как выйти из этого состояния. Я могу определить, что я нахожусь в состоянии, прослушивая ввод ключа и проверяя значение в точке вставки по сравнению со значением ключа в событии. Я попытался переключить только для чтения, сбросить значение, фокус (), переключить inputmode…
** Я хочу изменить размер элемента, чтобы было больше горизонтального пространства для ввода при поднятой клавиатуре.
* Я почти уверен, что для перехода в это состояние необходимы другие условия, однако я не уверен в точных условиях.
Комментарии:
1. У меня такая же проблема, курсор выходит за пределы, когда контейнер изменяет свою высоту, можете ли вы это исправить?
2. Аналогичная проблема здесь. он не хочет фокусировать элемент с помощью щелчков, хотя я могу грамматически сфокусировать элемент ввода.