捕获“;“完成”;在iPhone中单击按钮';基于JavaScript的虚拟键盘

捕获“;“完成”;在iPhone中单击按钮';基于JavaScript的虚拟键盘,javascript,ios,dom-events,Javascript,Ios,Dom Events,我想知道是否有一种方法可以使用JavaScript捕获iPhone虚拟键盘的“完成”按钮事件 基本上,我只想在用户单击“完成”时调用JS函数。将模糊事件附加到相关文本框。完成点火将触发此事件。完成键与回车键相同。因此,您可以收听按键事件。我用jQuery写这篇文章,我在coffee脚本中使用它,所以我试图在脑海中将它转换回js。抱歉,如果有错误 $('someElem').bind("keypress", function(e){ // enter key code is 13 if

我想知道是否有一种方法可以使用JavaScript捕获iPhone虚拟键盘的“完成”按钮事件


基本上,我只想在用户单击“完成”时调用JS函数。

将模糊事件附加到相关文本框。完成点火将触发此事件。

完成键与回车键相同。因此,您可以收听按键事件。我用jQuery写这篇文章,我在coffee脚本中使用它,所以我试图在脑海中将它转换回js。抱歉,如果有错误

$('someElem').bind("keypress", function(e){
   // enter key code is 13
   if(e.which === 13){
     console.log("user pressed done");
    } 
})

您需要这样做:

$('someElem').focusout(function(e) {
    alert("Done key Pressed!!!!")
});

它对我很有用,希望它也能帮助你。

我无法跟踪正在单击的“完成”按钮。它没有注册任何
点击
s或
按键
es。我必须使用
jquery
(因为项目已经在使用
jquery
)为
change
focusout
blur
)添加一个
Listener

基本上是说:

 document.addEventListener('focusout', e => {});

在IPhone 6s上测试,oron tech使用事件监听器的答案是唯一一个跨平台的答案

 document.getElementById("myID").addEventListener("focusout", blurFunction);

 function blurFunction() { // Do whatever you want, such as run another function
const myValue = document.getElementById("myID").value;
myOtherfunction(myValue);
}
“改变”活动运作良好

document.querySelector('your-input').addEventListener('change',e=>
    console.log('Done button was clicked')
);

我在寻找一种方法来做到这一点。。谢谢你的问题和答案。我已经检查了你的方法,但它不适用于我的文本区域。完成按钮与输入按钮不同。“Go”按钮相当于“Enter/”键代码13。我在mobile safari上试用过你的JSFIDLE,当你按“done”时,它不会触发警报。我还尝试自己实现它并改进您的JSFIDLE。我想你只是把顶部的蓝色“完成”和底部的“开始”或“返回”搞混了。按键代码13表示返回键或回车键。正如你所看到的,我的答案发布在2013年。如果safari自2013年以来更改了ios软件键盘的回车/回车/回车键,那么它将不再工作。请记住代码随时间的变化。听小提琴中的按键事件,当你按下所需的键时,会触发任何代码,这就是你所使用的。我不再做JS了,所以keypress事件可能不再被使用。它是2016@AlexReynolds更新你的答案不会有什么坏处,因为它已经过时了。它当前被选为正确答案。既然SO努力成为标准,那么这样做是有价值的。你的想法远远不是理想的解决方案。问题是,表单控件上的模糊事件可能会通过许多其他方式触发,而不仅仅是通过点击“完成”,例如点击页面上的其他位置或相邻控件。为什么这个答案会被忽略?它甚至与问题无关,事实上是一个不恰当的回答。在react中使用它对我有效。document.addEventListener('focusout',this.onFocusOut);如果您在输入外部单击focusout(至少在Android上),则会触发focusout。但是您是否在其他任何地方对其进行了测试?