2

我想在 PhoneGap 移动应用程序的 HTML 输入文本框中检测焦点和模糊事件。

对于 iOS,行为符合预期 - 当文本框处于焦点时(单击文本框),Focus!将显示警报消息。当文本框失去焦点(键盘关闭/移至下一个输入框)时,Blur!会显示警告消息。

但是,对于Android,当我单击文本框(文本框处于焦点)时,警报消息Focus!Blur!连续显示,这意味着它是焦点,模糊,焦点,模糊,...

如何避免这种情况,使其与 iOS 保持一致?

在 JavaScript 中:

var txtValue = document.getElementByID('txtValue');
txtValue.addEventListener('focus', function() {
    alert('Focus!');
});
txtValue.addEventListener('blur', function() {
    alert('Blur!');
});

在 HTML 中:

<input type="text" id="txtValue" />
4

1 回答 1

1

这是因为当您显示警报时,焦点进入该对话框,将其从输入字段中丢失并调度 blur 事件。当您关闭对话框时,焦点会返回输入字段,调度焦点事件。

我不知道确切的解决方法。也许使用自定义覆盖对话框/灯箱而不是 window.alert() 可能是一种解决方案。

其他选项可能是比较事件的发送位置,例如(未测试):

var txtValue = document.getElementById('txtValue');
txtValue.addEventListener('focus', function(evt) {
    if (evt.nodeName && evt.nodeName.toLowerCase() === 'input') {
        alert('focus!');
    }
});
于 2013-06-04T08:38:50.333 回答