【问题标题】:Checkbox Stays Checked on Page Refresh页面刷新时复选框保持选中状态
【发布时间】:2011-03-11 16:59:58
【问题描述】:

这是一个非常简单的问题(我假设)。可能是转发,但我在这里找不到答案……所以我们开始吧。

我在一个页面上有一个复选框,我想默认为“未选中”(除非我在我的 php 中另外指定)。

当我刷新页面时,如果选中了该框,它将保持选中状态,这是 no-bueno,因为选中该框通过附加到该框的函数将 dom 元素添加到我的页面。所以问题是,如果我刷新,该框仍处于选中状态,但 dom 元素不存在(因为我没有触发该函数,除非用户选中该复选框,否则我不想这样做)但该框是ALREADY 已选中,我最终在相反的地方 UN 选中该框创建我的 dom 元素并选中它删除它。

基本上,问题是……

有没有办法在没有 javascript 的情况下将复选框默认为未选中?

顺便说一句,我没有在 FF 3.5.10 以外的任何浏览器中检查(没有双关语)

【问题讨论】:

  • 在这里向后工作...如何让复选框在刷新后保持选中状态?我的表格清除了,我实际上希望它保留数据。我有一个问题,输入错误的验证码会清除我的表单,但我不知道如何解决。

标签: html checkbox


【解决方案1】:

http://weblogs.mozillazine.org/gerv/archives/2006/10/firefox_reload_behaviour.html (第一条评论):

这是故意这样做的,所以如果你点击刷新按钮,你 不要失去你的工作。在 Bugzilla 的某个地方有一个条目 被 WONTFIXed 要求定期刷新以始终重置表单 完全。基本上这是一个向后兼容的东西——每个 自 NS1.0(甚至 Mosiac)以来的浏览器已经做到了。

动态生成的页面甚至不会自行重置,但如果 过期设置为 0,然后你点击返回按钮,它会给你一个 新鲜的形式。此外,如果表单本身发生变化(添加或删除元素, 更改操作等)for 将在重新加载时重置。我没有 对其进行了测试,但将表单名称设置为随机名称(假设您 不需要 JS 访问的名称)可能会起作用。像 PHP 中的“>”。

正如您所说,强制刷新会清除表单,然后重置它 也。想做点什么 你想要什么(同样,未经测试)?

【讨论】:

  • 那么,你去吧。该死的FF! (开个玩笑,我爱FF,希望大家都用FF)
  • 是的,不幸的是,Web 开发人员讨厌的是 Web 用户想要的行为。有很多次我在写一篇长文时不小心重新加载了一个页面,我很感激 Firefox 保留了我的表单数据。
【解决方案2】:

这适用于即 自动完成=“关闭”

【讨论】:

    【解决方案3】:

    当然:

    document.getElementById('my_checkbox').checked = false;
    

    糟糕,我错过了关于没有 JS 的部分。据我所知,Firefox 在刷新时会保留页面状态,所以我想没有其他办法了。

    【讨论】:

    • 是的,我只是讨厌向我的页面添加更多的 javascript,因为我将添加一些到 CHECK 某些框。我想我可以一次性解决所有这些问题,但我只想从头开始。
    【解决方案4】:

    其实你只需要添加<form>标签,属性为autocomplete="off"

    <form autocomplete="off">
         <label for="checkbox">
              <input type="checkbox" id="checkbox">
         </label>
    </form>
    

    【讨论】:

    • 您在内联代码块中拼错了自动完成
    猜你喜欢
    • 2021-04-24
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    相关资源
    最近更新 更多