2015-02-24 87 views
-1

我有一些代碼來顯示/隱藏取決於條件的輸入按鈕:如何以編程方式打開/關閉按鈕?

settings = settingsManager.readSettings(); 
if (settings) { 
    $("#settings-back-button").show(); 
} else { 
    $("#settings-back-button").hide(); 
} 

然而,這並不妨礙用戶從按下設備後退按鈕。我怎樣才能做到這一點?

settings = settingsManager.readSettings(); 
if (settings) { 
    $("#settings-back-button").show(); 
    disableDeviceBackButton(); // How to implement this? 
} else { 
    $("#settings-back-button").hide(); 
    reEnableDeviceBackButton(); // How to implement this? 
} 
+0

重複,請參閱:http://stackoverflow.com/questions/18211984/how-to-control-back-button-event-in-jquery-mobile – sina72 2015-02-24 12:35:41

+0

我已更新我的問題。另一個問題是詢問如何控制後退按鈕,但這個問題是關於後退按鈕的切換。 – 2015-02-24 13:04:04

回答

1

我覺得這個代碼應工作:

<!DOCTYPE html> 
    <html> 
     <head> 
     <title>Back Button Example</title> 

     <script type="text/javascript" charset="utf-8" src="cordova.js"></script> 
    <script type="text/javascript" charset="utf-8"> 

    var backButtonDisabled = false; 
    // Wait for device API libraries to load 
    // 
    function onLoad() { 
     document.addEventListener("deviceready", onDeviceReady, false); 
    } 

    // device APIs are available 
    // 
    function onDeviceReady() { 
     // Register the event listener 
     document.addEventListener("backbutton", onBackKeyDown, false); 
    } 

    // Handle the back button 
    // 
    function onBackKeyDown(e) { 

     if (backButtonDisabled) { 
      e.preventDefault(); 
     } 
    } 

    function disableDeviceBackButton() { 
     backButtonDisabled = true; 
    } 

    function reEnableDeviceBackButton(){ 
     backButtonDisabled = false; 
    } 

</script> 
    </head> 
    <body onload="onLoad()"> 
    </body> 
</html> 

它可能有一些改進,比如不使用全局變量(backButtonDisabled),你可以使用sessionStorage的替代,但重要的部分是e.preventDefault();的避免後退按鈕的默認行爲,當你不想回去。

相關問題