iPhone移动Safari:强制打开键盘

38

这是一个HTML / CSS / JS(jQuery)的iPad应用程序。我有一个按钮,可以滑下输入表单。我想让用户聚焦在输入上,然后启动键盘。

这就是我正在使用的代码,但无法正常工作:

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

这确实可以对输入框进行聚焦,但无法启动键盘。这是因为安全原因还是其他什么原因导致的呢?

有没有办法强制或模拟用户点击输入框(或其他任何内容)?


1
你有检查过这个吗?https://dev59.com/aGw15IYBdhLWcg3wO5WX - Niczem Olaske
5个回答

4

试一试

已在Safari iPhone 7和iPhone 6 Plus、Android 4.4上测试过。

当我点击按钮时,它成功地打开了iOS虚拟键盘。

条件

1)创建一个按钮以触发keypress事件 => $('.btn_abc')

2)创建一个文本输入标签,并将其ID设置为此元素 => $('#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);

});

这在我的iPhone6 Plus上,使用Safari浏览器,iOS 10.3.1系统中有效。 - user1113531
很好。在iOS 11.3上为我工作(在iPhone 6P和iPad Air上,如果有任何影响的话)。 - storsoc

3

使用jgesture自动打开键盘,但这并不起作用:jQuery('#myTextBox').trigger("tapone"); - t q
第一个链接返回404。 - Jordan Eldredge

2
将按钮变成一个输入框,然后立即将焦点切换到主输入框。键盘将打开并保持打开状态。下面是使用您要求的按钮的示例,将一个透明的输入框放在用户点击的按钮上。在 iPhone 4(iOS 6/7)和 HTC Windows 手机上进行了测试。
您希望用户关注的输入内容:
<input id="main" />

用户按下的按钮(使用CSS叠加输入字段):
<a>Button</a><input onfocus="FocusMain()" />

即时切换焦点:

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

2
一个演示将会有很大的帮助。 - ceejayoz
对我来说,只使用 $('objId').focus(); 就解决了问题。 我是用它来清除文本框值的按钮,最初清除了文本框,键盘也会烦人地消失,现在键盘保持打开状态。太棒了,谢谢。 - user2108555

-2

尝试:

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

或者如果那不起作用:

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

blur()可以消除焦点,focus()可以把它带回来。由于某种原因,与focus()自行工作的情况相比,它每次都能正常工作。


2
同上 - 这不会起作用...由于设计原因,手机不允许在焦点上显示键盘,人们需要直接点击输入框或在另一个元素的onClick()事件中使用focus()。 - Zathrus Writer
1
抱歉,我刚刚意识到iOS 5版本的iPhone和iPad具有此功能,但Android肯定会对此产生影响。 - Zathrus Writer

-2
这应该可以实现你要的功能:
$("#element").focus().click();

不起作用!我也尝试了使用setTimeout延迟,并触发ontouchstart和ontouchend来模拟对输入的触摸,但没有进展。 - Vitim.us
2
这不会起作用...按设计,手机不允许在焦点上显示键盘,人们需要直接点击输入框或在另一个元素的onClick()事件中使用focus()。 - Zathrus Writer
3
需要翻译的内容:It's worth noting that this DID work at the time of posting, on the version of Safari which was current then.值得注意的是,这在发布时确实起作用,适用于当时的Safari版本。 - Collective Cognition

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接