Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中保存按钮的状态,即使在刷新每个登录用户后也是如此_Javascript_Jquery_Django - Fatal编程技术网

在Javascript中保存按钮的状态,即使在刷新每个登录用户后也是如此

在Javascript中保存按钮的状态,即使在刷新每个登录用户后也是如此,javascript,jquery,django,Javascript,Jquery,Django,我正在开发一个Django应用程序,试图保存单击按钮的状态 我有一个接受注册用户凭证(如果输入)的登录表单。如果成功,用户将被重定向到包含两个按钮的页面。我的主要目的是为新用户(一旦他/她登录)设置“按钮1”并禁用“按钮2”。因此,如果用户单击“按钮1”,该按钮将被禁用,然后“按钮2”将被启用。当同一用户注销时,应保存按钮状态。这意味着用户不应再次单击“按钮1”,因为上次启用了“按钮2” 但是,这似乎适用于所有登录的用户。按钮的状态与登录的特定用户不对应,但通常会影响所有用户的状态 代码如下:

我正在开发一个Django应用程序,试图保存单击按钮的状态

我有一个接受注册用户凭证(如果输入)的登录表单。如果成功,用户将被重定向到包含两个按钮的页面。我的主要目的是为新用户(一旦他/她登录)设置“按钮1”并禁用“按钮2”。因此,如果用户单击“按钮1”,该按钮将被禁用,然后“按钮2”将被启用。当同一用户注销时,应保存按钮状态。这意味着用户不应再次单击“按钮1”,因为上次启用了“按钮2”

但是,这似乎适用于所有登录的用户。按钮的状态与登录的特定用户不对应,但通常会影响所有用户的状态

代码如下:

interface.html:

<script>
    var disbledBtn = localStorage.getItem('disabled'); // get the id from localStorage
    $(disbledBtn).attr("disabled", true); // set the attribute by the id
    $('#button1').click(function () {
        $("#button1").attr("disabled", true);
        $("#button2").attr("disabled", false);
        localStorage.setItem('disabled', '#button1');
    }
</script>

<body>
        <button type="button" id ='button1'>  Button 1 </button>
        <button type="button" id ='button2'> Button 2 </button>
</body>

var disbledBtn=localStorage.getItem('disabled');//从localStorage获取id
$(disbledBtn).attr(“已禁用”,true);//通过id设置属性
$('#按钮1')。单击(函数(){
$(“#按钮1”).attr(“禁用”,真);
$(“#按钮2”).attr(“禁用”,false);
setItem('disabled','#button1');
}
按钮1
按钮2
如何使用户A的按钮状态和用户B的按钮状态彼此不同?当前,如果在用户A的帐户中单击了按钮1,则将启用用户B的按钮2(这不是我想要的)


是否有办法实现此要求?

在本地存储中

Key         Value
1001        2
1002        1
1003        2
脚本

<script>
        var user_id = 1001;  // unique id of user so we can find from localstorage

        var disbledBtn = localStorage.getItem(user_id);  // here it gives 1 OR 2 (if 1 then button1 is desabled, if 2 then button2 is disabled 

        if(disbledBtn == 2) {
          $("#button2").attr("disabled", true);  // disable button2  
        } else {
          $("#button1").attr("disabled", true);  // disable button1
        }

        $('#button1').click(function () {
            $("#button1").attr("disabled", true);
            $("#button2").attr("disabled", false);
            localStorage.setItem(user_id, '1');    // store 1 in localstorage because button1 is now disabled
        }
        $('#button2').click(function () {
            $("#button2").attr("disabled", true);
            $("#button1").attr("disabled", false);
            localStorage.setItem(user_id, '2');    // store 2 in localstorage because button2 is now disabled
        }

    </script>

    <body>
        <button type="button" id ='button1'>  Button 1 </button>
        <button type="button" id ='button2'> Button 2 </button>
    </body>

var user_id=1001;//用户的唯一id,以便从localstorage中查找
var disbledBtn=localStorage.getItem(user_id);//这里它给出1或2(如果是1,则按钮1被清除,如果是2,则按钮2被禁用
如果(解散BTN==2){
$(“#按钮2”).attr(“已禁用”,true);//禁用按钮2
}否则{
$(“#button1”).attr(“disabled”,true);//禁用按钮1
}
$('#按钮1')。单击(函数(){
$(“#按钮1”).attr(“禁用”,真);
$(“#按钮2”).attr(“禁用”,false);
setItem(用户_id,'1');//将1存储在localStorage中,因为button1现在已禁用
}
$('#按钮2')。单击(函数(){
$(“#按钮2”).attr(“禁用”,真);
$(“#按钮1”).attr(“禁用”,false);
setItem(用户_id,'2');//将2存储在localStorage中,因为button2现在已禁用
}
按钮1
按钮2

只需通过


每个用户的Cookie完全不同。

为每个用户保存唯一的localStorage项,并使用该id(
localStorage.getItem(_id);
)而不是localStorage.getItem('disabled')存储该项;我建议您将用户状态保存到数据库中。
localstorage
是根据浏览器/机器创建的,即一个用户从第一台机器登录并设置状态,然后从第二台机器再次登录,然后原始状态将被加载,而不是保存状态。@BrijeshGajera您能做一个小演示吗?@anuragal我将与一个用户建立一对一的关系,对吗?我如何将其存储在我的模型中?你能给出一个小例子吗?我将非常感激。请按照本文了解模型和数据库-如果假设有很多用户,应用程序会变慢(由于耗尽本地存储空间)?另外,用户Id现在是硬编码的,有没有一种方法可以动态告诉JS哪个用户是谁?或者我应该使用django模型来存储值?我认为localstorage对您来说是新的,所以localstorage存储在本地内存(而不是服务器或数据库)中,在其用户浏览器中,您可以在
开发者工具(ctrl+sift+d)中看到它->Application->Storage->Local Storage
它不会影响速度哦,好吧,我问的第二个问题呢?现在,用户id被硬编码为1001,我如何更改它并通过用户id动态告诉JS哪个用户是谁?localstorage存储在浏览器中,所以当您为用户1、用户2和用户3创建localstorage时,它会存储在浏览器中这里的计算机user1只包含他/她的本地存储,而不是其他。我会尝试一下,但我现在想实现Brijesh的想法。不过非常感谢你的建议。