Как я могу сфокусировать текстовое поле HTML на iPhone (вызывая клавиатуру)?
Я пишу веб-приложение iPhone, и я хочу автоматически сфокусировать текстовое поле при загрузке страницы, подняв клавиатуру. Обычный Javascript:
input.focus();
похоже, не работает. Любые идеи?
Ответы
Ответ 1
Примечание: этот ответ старый и может не иметь отношения к более новым версиям там...
Это не поможет вам, но последний плакат в этот
поток написал, что его ошибка в движке webkit.
Я не могу сказать, проверена ли его ошибка или нет...
Последнее сообщение от обратная машина (поскольку оригинал, похоже, не работает):
Я разрабатываю свое приложение в чистом XHTML MP/Ecmascript MP/WCSS. Так использование собственного браузера для браузера api на самом деле не является вариантом для меня. Да, поведение, о котором говорилось, такое же, как мое. Я обыскал его темы в bugzilla на webkit.org и обнаружили, что это действительно сообщила об ошибке. focus() в текстовое поле выделяет элемент, но не предоставляет в нем карат для того, чтобы пользователь начал вводить текст. Использование таймера, как указано в "[email protected]", тоже не помогает.
Такое поведение распространено на всех платформах (s60, iphone, android), которые используйте движок webkit.
Итак, на данный момент я не вижу решения этой проблемы.
Надеюсь, что это поможет
Ответ 2
Он будет показывать клавиатуру только в том случае, если вы вызываете фокуса с события клика, поэтому поместите кнопку на странице с помощью кнопки onclick, которая будет делать фокус, и отобразит клавиатуру. Полностью бесполезный, за исключением проверки (при нажатии кнопки подтверждения подтверждения фокус на недопустимый элемент)
Ответ 3
Изменить: Следующие действия больше не работают на iOS. UIWebView позволил автофокусу и ссылкам на главном экране использовать для автофокусировки, но они отключили многие версии назад.
Свойство autofocus
(см. ниже) не работает с URL-адресом в Mobile Safari, но работает, если вы:
- с помощью UIWebView
- с помощью ссылки на главном экране
Шрифт ввода должен быть достаточно большим, чтобы избежать масштабирования iOS10 при двойном касании (теперь этот видоискатель всегда масштабируется) и для разработки страницы, размер которой должен быть таким, чтобы он соответствовал экрану (в противном случае при загрузке страницы получить странные ошибки времени/гонки при масштабировании, или если прокручиваемое поле иногда не очень близко к экрану).
autofocus
: спецификацией HTML5 для этого является свойство автофокуса тега ввода. Но iOS игнорирует это, предположительно, для более чистого пользовательского интерфейса, который не всплывает сенсорной клавиатурой при навигации по странице. Здесь - страница, демонстрирующая свойство автофокуса. Перед HTML5 вы вызывали element.focus() в событии window.onload. Однако вызовы focus() не поддерживаются в iOS, за исключением обработчика события onclick.
Ответ 4
У меня есть аналогичная проблема, только моя проблема в том, что фокус не будет происходить на событии "коснуться".
http://jsfiddle.net/milosdakic/FNVm5/
Следующий код будет работать в Chrome/Safari и т.д., но не будет работать в Mobile Safari. Единственный способ заставить его работать - это сделать событие на 'click', но, увидев, что код создан для устройства iOS, ему будет полезно работать с событиями касания.
Кажется, это ошибка с движком Webkit.
Ответ 5
Может быть, немного поздно, но для будущего человека. В нашем webapp, работающем на iOS iPad (6 и более поздних), мы делаем это с заданным интервалом:
startFocusOnTextField: function() {
this.intervalIDForTextFieldFocus = window.setInterval(function() {
document.getElementById(page.textInputFieldObj.id).focus();
}, 150);
},
который вызывается при загрузке страницы (мобильная среда jQuery)
Ответ 6
Если вы устанавливаете фокус с помощью события click, вам необходимо предотвратитьDefault, иначе действие по умолчанию для событий клика будет фокусироваться на щелкнутом элементе.
Ответ 7
Это рабочий процесс:
setTimeout(function(){
input.focus();
},500);//milliseconds