【发布时间】:2011-06-25 15:46:59
【问题描述】:
我想知道是否有一种方法可以使用 JavaScript 来捕获 iPhone 的虚拟键盘的完成按钮事件?
基本上,我只是希望能够在用户点击完成时调用一个 JS 函数。
【问题讨论】:
-
我正在寻找一种方法来做到这一点。感谢您的问题和答案。
标签: javascript ios dom-events
我想知道是否有一种方法可以使用 JavaScript 来捕获 iPhone 的虚拟键盘的完成按钮事件?
基本上,我只是希望能够在用户点击完成时调用一个 JS 函数。
【问题讨论】:
标签: javascript ios dom-events
这个问题有点老了,但我最近找到了一种解决方法。
'blur'、'focusout' 事件的问题在于,即使用户只是在输入/文本区域之外点击,并且没有按下“完成”按钮,它们也会触发,在我的情况下,UI 的行为应该有所不同,具体取决于到底发生了什么。
所以为了实现它,我做了接下来的事情:
addEventListener 函数在window 上添加click 处理程序。当用户点击窗口时,记住变量中点击的时间戳(我们称之为lastClick = Date.now())blur 事件处理程序中,将超时设置为10-20 毫秒以允许其他事件发生。然后,在超时后,检查blur 事件发生的时间差是否比lastClick(基本上是Date.now() - lastClick < 50)低50-100 毫秒。如果是,则将其视为“完成”按钮单击并执行相应的逻辑。否则,这是一个常规的“模糊”事件。这里的关键是,点击键盘控件(包括完成按钮)不会触发window 上的click 事件。使键盘隐藏的唯一其他方法基本上是点击页面的其他元素并使文本区域失去焦点。因此,通过检查事件发生的时间,我们可以估计这是完成按钮单击还是只是模糊事件。
【讨论】:
blur 事件也会被触发。
“更改”事件工作正常
document.querySelector('your-input').addEventListener('change',e=>
console.log('Done button was clicked')
);
【讨论】:
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);
}
【讨论】:
【讨论】:
我无法跟踪被点击的“完成”按钮。它没有注册任何clicks 或keypresses。我必须使用jquery 为change、focusout 和blur 使用addEventListeners(因为该项目已经在使用jquery)。
【讨论】:
你需要做一些这样的事情:
$('someElem').focusout(function(e) {
alert("Done key Pressed!!!!")
});
它对我有用,希望它也能帮助你。
【讨论】:
完成键与回车键相同。所以你可以听一个按键事件。我正在使用 jQuery 编写这个并且我在咖啡脚本中使用它,所以我试图将它转换回我脑海中的 js。如有错误请见谅。
$('someElem').bind("keypress", function(e){
// enter key code is 13
if(e.which === 13){
console.log("user pressed done");
}
})
【讨论】:
将模糊事件附加到相关文本框。 done fire 将触发此事件。
【讨论】: