我需要更改我的phonegap项目的后退按钮功能,而我已经成功完成了该操作,没有任何问题.现在唯一的问题是,我需要根据用户是否选择了某个字段来进一步更改功能.
基本上,如果用户单击ID为“ date-selector1”的字段,则需要完全禁用后退按钮.
我试图使用document.activeElement,但是它只返回元素的类型(在这种情况下为输入),但是我仍然希望功能在常规输入中时起作用,而不是在常规输入中时起作用.一个特定的ID.
编辑
我尝试了以下所有建议,但最终获得了以下代码,但仍然没有成功.
function pluginDeviceReady() {
document.addEventListener("backbutton", onBackKeyDown, false);
}
function onBackKeyDown() {
var sElement = document.activeElement;
var isBadElement = false;
var eList = ['procedure-date', 'immunization-date', 'lab-test-done', 'condition-onset', 'condition-resolution', 'medication-start-date', 'medication-stop-date', 'reaction-date'];
console.log("[[ACTIVE ELEMENT: --> " + document.activeElement + "]]");
for (var i = 0;i < eList.length - 1;i++) {
if (sElement == $(eList[i])[0]) {
isBadElement = true;
}
}
if (isBadElement) {
console.log('Back button not allowed here');
} else if ($.mobile.activePage.is('#main') || $.mobile.activePage.is('#family') || $.mobile.activePage.is('#login')) {
navigator.app.exitApp();
} else {
navigator.app.backHistory();
}
}
解决方法:
如果您正在监听后退按钮,则可以添加以下if语句:
if (document.activeElement == $("#date-selector1")[0]) {
/*disable button here, return false etc...*/
}
甚至更好(感谢乔纳森·桑普森)
if (document.activeElement.id === "date-selector1") {
/*disable button here, return false etc...*/
}