3

我需要更改我的 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();
    }
}
4

2 回答 2

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...*/ 
}
于 2012-06-08T16:30:36.417 回答
1

您可以在用户单击某个字段时设置一个标志,或者您可以在用户单击应该禁用后退按钮的字段时设置一个单击事件(或任何其他类型的事件)。

从文档中可以看出,对于特定页面,后退按钮是有条件的,您可以back-btn=true删除该后退按钮。

http://jquerymobile.com/test/docs/toolbars/docs-headers.html

如果您需要复杂的条件功能,您可以在页眉或页脚中创建自己的按钮,使用 jquery-mobile 小部件设置样式并实现您自己的点击功能。

于 2012-06-08T16:23:56.403 回答