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