Jquery 如何在页面刷新后记住选定的单选按钮

Jquery 如何在页面刷新后记住选定的单选按钮,jquery,radio-button,local-storage,Jquery,Radio Button,Local Storage,我正在使用前一篇文章中提到的localstorage思想: 他们的jfiddle示例工作得很好,但是当我将相同的代码(见下文)合并到本地主机上的网页中时,新的选择在刷新页面后不起作用。我正在引用最新的jquery库- 如有任何建议,我将不胜感激。我肯定我错过了一些简单的东西 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transi

我正在使用前一篇文章中提到的localstorage思想:

他们的jfiddle示例工作得很好,但是当我将相同的代码(见下文)合并到本地主机上的网页中时,新的选择在刷新页面后不起作用。我正在引用最新的jquery库-

如有任何建议,我将不胜感激。我肯定我错过了一些简单的东西

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>

<script type="text/javascript">

$(function()
{
    $('input[type=radio]').each(function()
    {
        var state = JSON.parse( localStorage.getItem('radio_'  + this.id) );

        if (state) this.checked = state.checked;
    });
});

$(window).bind('unload', function()
{
    $('input[type=radio]').each(function()
    {
        localStorage.setItem(
            'radio_' + this.id, JSON.stringify({checked: this.checked})
        );
    });
});​

</script>

</head>

<body>

<form method="post">
<input type="radio" name="foo" id="foo1" />foo1<br />
<input type="radio" name="foo" id="foo2" />foo2<br />
<input type="radio" name="bar" id="bar1" />bar1<br />
<input type="radio" name="bar" id="bar2" />bar2<br />
</form>

</body>

无标题文件
$(函数()
{
$('input[type=radio]')。每个(函数()
{
var state=JSON.parse(localStorage.getItem('radio_'+this.id));
如果(state)this.checked=state.checked;
});
});
$(窗口).bind('unload',function()
{
$('input[type=radio]')。每个(函数()
{
localStorage.setItem(
'radio_'+this.id,JSON.stringify({checked:this.checked})
);
});
});​
foo1
foo2
bar1
bar2

尝试使用合适的HTML5
doctype

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>
...

无标题文件
...
如果您没有包含正确的HTML5 doctype,大多数浏览器都会将页面呈现为较旧的[X]HTML而不是HTML5,例如(不过,Chrome通常是该规则的一个例外)

另外,当您显然正在使用Adobe DreamWeaver时,不要忘记取消选中“包含BOM签名”,并在DW的“另存为”菜单中选择“无”作为规范化字典。这将防止它在文档开头添加垃圾位,这也可能会破坏您的
,而必须从浏览器接收到的页面HTML数据的第一个字节开始

edit:JSFiddle会自动将您的代码添加到有效的HTML5页面,这就是为什么它在那里工作得非常好的原因。您可以通过右键单击呈现页面的框架并在Firefox中选择
This frame>View frame Source
来检查它(Chrome和IE的类似方法)


还请注意,IE<8中不支持
localStorage
。检查是否需要与旧版本IE的跨浏览器兼容性。

尝试使用合适的HTML5
doctype

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>
...

无标题文件
...
如果您没有包含正确的HTML5 doctype,大多数浏览器都会将页面呈现为较旧的[X]HTML而不是HTML5,例如(不过,Chrome通常是该规则的一个例外)

另外,当您显然正在使用Adobe DreamWeaver时,不要忘记取消选中“包含BOM签名”,并在DW的“另存为”菜单中选择“无”作为规范化字典。这将防止它在文档开头添加垃圾位,这也可能会破坏您的
,而必须从浏览器接收到的页面HTML数据的第一个字节开始

edit:JSFiddle会自动将您的代码添加到有效的HTML5页面,这就是为什么它在那里工作得非常好的原因。您可以通过右键单击呈现页面的框架并在Firefox中选择
This frame>View frame Source
来检查它(Chrome和IE的类似方法)


还请注意,IE<8中不支持
localStorage
。检查是否需要与旧版本IE的跨浏览器兼容性。

您使用的代码是否与JFIDLE示例中的代码完全相同?如果你不发布任何代码,这真的很难帮助。你的确切代码是什么?我们猜不出你们做错了什么,我们必须分析你们的实际代码。代码现在添加到初始问题中。干杯。如果不添加HTML5
doctype
,我认为HTML5的
localStorage
在大多数浏览器中都不起作用。您使用的代码是否与JFIDLE示例中的代码完全相同?如果你不发布任何代码,这真的很难帮助。你的确切代码是什么?我们猜不出你们做错了什么,我们必须分析你们的实际代码。代码现在添加到初始问题中。干杯。如果你不添加HTML5
doctype
,我认为HTML5的
localStorage
在大多数浏览器中都不起作用。谢谢-这是个好建议。不幸的是,更新文档类型并没有解决这个问题,所以我最后插入了呈现页面的源代码(在框架内),这样就可以了。有趣的是,这个代码看起来和我的初始代码完全相同。所以javascript里面一定有个小问题,但我找不到它是什么。再次感谢,没问题
=]
很多事情都会触发怪癖模式,如果你认为这是你的JS的错误,你通常可以检查JS错误控制台——Chrome/IE中的F12,Firefox中的Ctrl+Shift+K(或者安装了Firebug的F12)。很高兴能帮上忙<代码>:)此外,检索所选单选按钮id的最佳方法是什么?关于localstorage的简明教程似乎不多,这可能就是为什么我还没有完全掌握它的原因。这取决于您如何存储它
this.id
应该足够了,如果您正在遍历存储的收音机,我可以根据需要仔细查看。@user1267980不确定这是否正是您要查找的内容,但我编辑了链接答案的小提琴,并添加了一些注释:。在这把小提琴里,我检查了收音机并提醒它的id.=]谢谢-这是个好建议。不幸的是,更新文档类型并没有解决这个问题,所以我最后插入了呈现页面的源代码(在框架内),这样就可以了。有趣的是,这个代码看起来和我的初始代码完全相同。所以javascript里面一定有个小问题,但我找不到它是什么。再次感谢,没问题
=]
很多事情都会触发怪癖模式,如果你认为这是你的JS的错误,你通常可以检查JS错误控制台——Chrome/IE中的F12,Firefox中的Ctrl+Shift+K(或者安装了Firebug的F12)。很高兴能帮上忙<代码>:)此外,检索所选单选按钮id的最佳方法是什么?关于localstorage的简明教程似乎不多,这可能就是为什么我还没有完全掌握它的原因。这取决于您如何存储它
this.id
应该足够了,如果您正在迭代