Phonegap - 确定活动的确切元素

时间:2012-06-08 16:18:45

标签: javascript jquery html5 jquery-mobile cordova

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

2 个答案:

答案 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小部件设置样式并实现您自己的点击功能。