2015-02-24 101 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();的避免后退按钮的默认行为,当你不想回去。

相关问题