iPhone Mobile Safari: принудительное открытие клавиатуры - PullRequest
36 голосов
/ 12 июля 2010

Это приложение для iPad на HTML / CSS / JS (jQuery). У меня есть кнопка, которая скользит вниз по форме ввода. Я хотел бы сосредоточить внимание пользователя на вводе данных, а затем запустить клавиатуру.

Это то, с чем я работаю, но не работает:

$('#myFormField').focus();

Это действительно фокусирует ввод, но не запускает клавиатуру. Это просто невозможно (по соображениям безопасности или как-то еще)?

Есть ли способ заставить или симулировать пользователя, который нажимает на ввод (или что-нибудь в этом роде)?

Ответы [ 5 ]

4 голосов
/ 16 августа 2013

Может быть, вам помогут следующие ссылки:

3 голосов
/ 22 февраля 2017

Попробуйте это

Протестировано на iPhone Safari 7 и iPhone 6 Plus, Android 4.4

и он успешно открыл виртуальную клавиатуру iOS, когда я коснулся кнопки.

состояние

1) сделать кнопку для запуска события нажатия клавиши => $('.btn_abc')

2) создать тег для ввода текста и установить идентификатор для этого элемента => $('#search_input')

$( document ).ready(function() {

  var focusTextField = function(){
    console.log("focusElement");
  };

  var onKeypressHandler = function(){
    console.log("* * * keypress event handler")
    $('#search_input').blur().focus();
  };

  var onClickHandler = function() {
    $('.btn_abc').trigger('keypress');
  };

  $('#search_input').bind('focus', focusTextField);
  $('.btn_abc').bind('click', onClickHandler);
  $('.btn_abc').bind('keypress', onKeypressHandler);

});
1 голос
/ 31 июля 2013

Превратите эту кнопку в поле ввода, а затем немедленно переключите фокус на основное поле ввода. Их клавиатура откроется и останется открытой. Ниже приведен пример использования кнопки, как вы просили, при размещении прозрачного поля ввода над кнопкой, которую нажимает пользователь. Протестировано на iPhone 4 (iOS 6/7) и телефоне HTC Windows.

Ввод, на котором вы хотите, чтобы пользователь сфокусировался:

<input id="main" />

Кнопка, которую нажимает пользователь (с полем ввода, наложенным с помощью css):

<a>Button</a><input onfocus="FocusMain()" />

Мгновенно поменяйте фокус:

function FocusMain()
{
    $("#main").focus();
}
0 голосов
/ 26 июня 2012

Попробуйте:

$('#element').blur().focus();

или, если это не работает:

$('#element').focus().blur().focus();

размытие () устраняет фокус, а фокус () возвращает его.По какой-то причине он работает каждый раз по сравнению с focus (), работающим время от времени самостоятельно.

0 голосов
/ 04 февраля 2011

Это должно делать то, что вы хотите:

$("#element").focus().click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...