【问题标题】:How to retain the state of input radio button after page refresh页面刷新后如何保留输入单选按钮的状态
【发布时间】:2013-09-24 21:58:31
【问题描述】:

我有一个表单,上面有 20 个单选按钮。如果页面上有错误(页面将刷新),我需要存储单选按钮的状态。我设法让它工作了 50%。但是,如果我在第二次刷新时选择不同的单选按钮,它仍然会保留第一次提交的状态。

这是我的代码:

var x= $("input[id^='question-']");
  $(x).click(function(){
    localStorage['radios'] = this.checked;
  });

  $(x).prop('checked', localStorage['radios'] == 'true');

任何帮助将不胜感激!

【问题讨论】:

  • 通常服务器会在返回页面之前设置广播状态。
  • 您可以使用 cookie 保存一个列表数组,该数组将包含相应索引处的每个单选按钮的 0 和 1
  • 为了简单起见,我宁愿使用本地存储。我可能只需要对上面的代码进行一些小调整。谢谢

标签: javascript jquery


【解决方案1】:

我认为刷新页面后获取值的唯一形式是在发送表单后使用 POST 或 GET 发送信息。推荐使用 PHP 脚本处理表单并进行验证。

如果您有任何疑问,可以在这里查看how to catch information of the forms

【讨论】:

  • 本人仅限使用JS,代码运行在asp.net平台。谢谢
  • 好的,但我知道您需要将表单提交到任何脚本页面,不是吗?而且您必须以任何方式处理表格中的所有信息,不是吗?可以制作表单的同一个页面,表单的动作方法可以是form.asp,在接收信息时进行所有的验证。我是一名 PHP 开发人员,但我认为这个链接可以帮助self refering forms
  • 感谢您的帮助..但使用 localstorage 似乎是一种更简单的方法 :)
【解决方案2】:

您的代码看起来只是一次又一次地覆盖相同的值,而不管它用于什么输入,并且还应该使用更改事件而不是单击。尝试类似(未经测试):

var $x = $("input[id^='question-']");

// Set localstorage on change event per radio button
$x.on('change', function(){
    localStorage[$(this).attr('name')] = this.checked;
});

// Check all radio buttons on page load against localStorage
$x.each(function(){
    $(this).prop('checked', localStorage[$(this).attr('name')] == 'true');
}

【讨论】:

  • 为什么要使用名称 attr?如果 id 可用?
猜你喜欢
  • 2013-01-21
  • 1970-01-01
  • 2016-12-20
  • 2013-09-28
  • 1970-01-01
  • 2017-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多