我需要更改phonegap项目的后退按钮功能,我已经成功完成了没有任何问题。现在唯一的问题是,如果用户选择了某个字段,我需要进一步更改功能。
基本上,如果用户点击了id为“date-selector1”的字段,我需要完全禁用后退按钮。
我试图使用document.activeElement,但它只返回元素的类型(在这种情况下是输入),但我仍然希望功能在它们处于常规输入时工作,但不是在它们处于特定身份证的输入。
修改 我尝试了下面的所有建议,最终得到了以下代码,但仍然没有成功。
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();
}
}
答案 0 :(得分:2)
如果您正在侦听后退按钮,则可以添加以下if语句:
if (document.activeElement == $("#date-selector1")[0]) {
/*disable button here, return false etc...*/
}
甚至更好(感谢Jonathan Sampson)
if (document.activeElement.id === "date-selector1") {
/*disable button here, return false etc...*/
}
答案 1 :(得分:1)
当用户点击某个字段时,您可以设置一个标记,或者当用户点击应禁用该按钮的字段时,您可以设置一个点击事件(或任何其他类型的事件)。
从backbuton条件有效的特定页面的文档中,您可以删除back-btn=true
删除该后退按钮。
http://jquerymobile.com/test/docs/toolbars/docs-headers.html
如果您需要复杂的条件功能,您只需在页眉或页脚中创建自己的按钮,使用jquery-mobile小部件设置样式并实现您自己的点击功能。