问题 在非文本字段上通过JavaScript打开iPad的键盘?


我有一个div通过一些聪明的JavaScript充当文本框。是的,那闻起来,但它的供应商代码我无法改变:(

在iPad上,键盘不显示,因为它不是文本字段。有没有办法通过javascript强制打开键盘,或用告诉Safari的东西装饰HTML“是的,这真的是一个文本字段,只相信我!”?


5353
2017-07-18 20:14


起源

我不认为我有可能害怕......有很多人问同样的问题: google.co.uk/... - James Allardice
如果你可以用javascript影响页面,你可以创建一个替换div的文本框... - Charles Boyung
@Charles True,但是我还必须添加供应商所有的JavaScript逻辑。我可以做到这一点,但如果有办法避免它,它会很棒 - Michael Stum♦


答案:


根据我的经验,没有办法通过Javascript启动iPad或iPhone键盘。我最终使用了可能有用的解决方法。

我只是放置一个文本字段,将其不透明度设置为相关div的0。然后我在更改文本字段内容时更新div。

像这样(使用jQuery)

$('textarea').bind('input', function(e){
    var changedVal = $( e.currentTarget ).val();
    $('div').html( changedVal );    
});

// The input event is not a cross browser solution, use a combination of 
// keyboard and mouse events to correctly respond to any changes in the textarea

如果您的供应商代码依赖于键盘或鼠标事件监听器来实现它的魔力,那么您可以将所有事件类型代理到下方的div上。

像这样的东西(使用jQuery)

$('textarea').bind('keyup keydown keypress mouseup mousedown click', function(e) {
    e.currentTarget = $('div').get(0);
    $('div').trigger(e);
});

11
2017-07-19 10:08