Javascript 使用contenteditable div时在移动设备上隐藏软键盘

Javascript 使用contenteditable div时在移动设备上隐藏软键盘,javascript,android,ios,keyboard,contenteditable,Javascript,Android,Ios,Keyboard,Contenteditable,我使用ContentEditableDiv作为一个页面,移动设备可以查看该页面,以获取某些内容的输入。我希望在用户按enter键时隐藏软键盘,而不是在div中按enter键的正常操作。我第一次尝试使其工作时的情况如下所示: if event.keyCode == 13 #enter event.preventDefault() #to prevent the normal behaviour of enter @$("#the_editable_div").blur() 然而,这似乎不

我使用ContentEditableDiv作为一个页面,移动设备可以查看该页面,以获取某些内容的输入。我希望在用户按enter键时隐藏软键盘,而不是在div中按enter键的正常操作。我第一次尝试使其工作时的情况如下所示:

if event.keyCode == 13 #enter
  event.preventDefault() #to prevent the normal behaviour of enter
  @$("#the_editable_div").blur()
然而,这似乎不像输入那样有效。div会失去焦点,但键盘不会隐藏在iOS或android上

我也尝试过这个解决方案,但发现它不起作用。如果我将注意力集中在另一个文本字段上,在iOS上模糊,它仍然不会关闭键盘,而在android上,我发现它会将键盘更改为用于常规字段的键盘,再次按enter键将关闭键盘,但当在contenteditable div字段中按enter键时,它不会立即关闭。这对我来说似乎很奇怪,因为如果我自己点击输入字段,然后通过javascript模糊它,那么键盘就会正常关闭


有没有一种方法可以让contenteditable div在android和iOS设备上关闭软键盘,当该div处于焦点时按下enter键?

这种解决方法可以很好地工作,至少在android上是这样(我无法在iPad上测试):


var ghostInput=document.getElementById(“ghostInput”);
ghostInput.onfocus=函数(){
ghostInput.blur();
}
document.getElementById(“myDiv”).onkeydown=function(e){
如果(e.keyCode==13)ghostInput.focus();
}

您是否编码了
焦点
模糊
链接?你把这些应用在一个可见的领域?我的情况略有不同,因为键盘在不同的时刻显示和隐藏(通过
focus
blur
在虚拟字段上)。在
focus
之后的短暂停顿后,您是否可以尝试推迟
blur
?我尝试过分别进行focus和blur调用,以及链接。我所有的尝试都是使用可见的输入字段。我也尝试过使用_defer来调用blur,但也没有什么不同。我相信这是contenteditable在移动设备上工作方式的一个问题。我测试了多个解决方案,但对于可编辑div似乎没有任何效果。然而,对于输入和文本区域,这一点都不难,请参见此处
<input type="text" id="ghostInput" style="position:absolute;top:-50px" />
<div id="myDiv" contenteditable="true" style="width:100%;height:100px;background-color:yellow"></div>
<script>
    var ghostInput = document.getElementById("ghostInput");
    ghostInput.onfocus = function () {
        ghostInput.blur();
    }
    document.getElementById("myDiv").onkeydown = function (e) {
        if (e.keyCode == 13) ghostInput.focus();
    }
</script>