3

電話ギャッププロジェクトの戻るボタン機能を変更する必要がありますが、問題なく実行できました。現在の唯一の問題は、ユーザーが特定のフィールドを選択しているかどうかに基づいて、機能をさらに変更する必要があることです。

基本的に、ユーザーが「date-selector1」のIDを持つフィールドをクリックした場合、戻るボタンを完全に無効にする必要があります。

document.activeElementを使おうとしましたが、要素のタイプ(この場合はinput)のみが返されますが、一般的な入力にある場合でも機能が機能するようにしたいのですが、特定の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...*/ 
}

またはさらに良い(ジョナサンサンプソンのおかげで)

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 に答える