0

我只是在为 Phonegap 应用程序(jQuery Mobile)开发一个简单的登录屏幕。

一切正常,用户甚至可以通过单击复选框来保存登录数据(我使用 localStorage。)现在,当用户单击注销按钮时,我想使用未选中的复选框将用户重定向到登录屏幕。重定向工作正常,密码被删除。唯一的问题是复选框,它一直被选中,即使我告诉它不被选中。

这是我的代码:

html

...
<form id="login">

    <input type="text" placeholder="Username" id="usr" /><br />
    <input type="password" placeholder="Password" id="pwd" /><br />
    <input type="checkbox" name="checkbox-1" id="checkbox-1" class="custom" />
    <label for="checkbox-1">Stay logged in</label>

    <a data-role="button" data-transition="none" id="logindata" onclick="LogIn()">Login</a>

</form>
...

javascript

//checking if there is already a saved password. if yes, setting values
function checkStorage() {

    if ( localStorage["pw"] != null){

        document.getElementById("usr").value = localStorage["name"];
        document.getElementById("pwd").value = localStorage["pw"];
        $("#checkbox-1").prop("checked", true);

    } 

}

function LogIn() {

    var usr = document.getElementById('usr').value;
    var pwd = document.getElementById('pwd').value; 

    //always saving the name
    localStorage["name"] = usr;

    //if checkbox checked, save the password. if not, delete saved password
    if ( $("#checkbox-1").is(":checked") ) {

        localStorage["pw"] = pwd;

    } else {

        if (localStorage["pw"] != null){

            localStorage.removeItem("pw");

        }

    }

    $.ajax({

        url: 'https://myurl',
        async: false,
        username: usr,
        password: pwd,
        success: function () {
            $.mobile.changePage("#success");
        },
        error: function(){
            alert("Please enter correct username and password!");
        }

    });
}

function LogOut() {

    var usr = "";
    var pwd = "";

    $.mobile.changePage("#index");
    document.getElementById("usr").value = localStorage["name"];
    document.getElementById("pwd").value = "";
    localStorage.removeItem("pw");

    //This code is not working?
    $("#checkbox-1").prop("checked", false);

}

当我让这段代码工作时,我想对密码进行编码,但现在我只想让它工作。;)

我希望,有人可以帮助我吗?

编辑:

我终于知道了,这是怎么回事。我正在为这个登录表单使用 jQuery Mobile,并且必须刷新复选框!所以下面的代码现在对我有用:

$("#checkbox-1").removeProp("checked").checkboxradio("refresh");
4

2 回答 2

0

如果你做一个

removeProp("checked")

而不是

prop("checked", false)

我认为你应该取得更大的成功。

编辑

只是一个想法,您的登录表单是否在具有 id 索引的元素内?如果是这样,更改页面是否不需要低于 localstorage.removeitem?

于 2013-07-29T10:21:27.730 回答
0

你可以做

    $(document).ready(function(){
    if($("#checkbox-1").is(':checked')){
         $('#checkbox-1').removeAttr('checked'); 
        }



})

演示测试

于 2013-07-29T10:41:57.620 回答