IPhone Mobile Safari: открыть клавиатуру

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

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

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

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

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

Спасибо!

Ответ 2

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

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

<input id="main" />

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

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

Сменить фокус моментально:

function FocusMain()
{
    $("#main").focus();
}

Ответ 3

Попробуйте

Протестировано на Safari iPhone 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);

});

Ответ 4

Try:

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

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

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

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

Ответ 5

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

$("#element").focus().click();