【发布时间】:2019-02-20 15:25:18
【问题描述】:
我正在尝试启用和禁用网页按键上的复选框。我正在尝试使用 sessionStorage 使其在页面刷新之间持续,而不是在浏览器会话之间。
$(document).ready(function(){
var set = sessionStorage.getItem('disable');
if (sessionStorage.getItem('disable') === null){
$("#cblDoctors_3").prop('disabled', false);
} else{
$("#cblDoctors_3").prop('disabled', set);
}
console.log(set);
});
$("html").keypress(function( event ){
if(event.which == 119){ //this is the 'w' key
var box = $("#cblDoctors_3").prop('disabled');
$("#cblDoctors_3").prop('disabled', !box);
sessionStorage.removeItem('disable');
sessionStorage.setItem('disable', !box);
console.log(sessionStorage.getItem('disable'));
}
});
所以一切正常,控制台记录了存储项目的正确状态,但是当页面重新加载时,一旦会话项目被存储,即使页面刷新,该框也不会重新激活。因此,假设用户在禁用该框后“启用”了该框,控制台将记录为 false,意思是:prop('disabled', false)。这是预期的结果。但是当页面刷新时,尽管会话项为 false,该框仍将被禁用,这意味着页面正在解释 prop('disabled', true),尽管会话变量控制台记录了“false”。我错过了什么?
【问题讨论】:
-
小点但是
if (sessionStorage.getItem('disable') === null)...您已经在上一行检索到会话项目...肯定if (set === null)会更有效? -
我不希望它持续到会话之后,这就是我不使用 localStorage 的原因。
-
我认为您需要在将
set传递给 .prop() 命令之前将其转换为布尔值 - 当它从会话存储中出来时,它是一个字符串
标签: javascript jquery session-storage