【问题标题】:Make responsive Checkbox in HTML and JS?在 HTML 和 JS 中制作响应式复选框?
【发布时间】:2016-01-19 03:52:29
【问题描述】:

我需要使复选框响应(在 .HTML 文件中),即在选择复选框时,页面的 url 应该被修改并且页面应该被刷新。以下是我的代码,现在复选框正在修改 url,但是一旦刷新它们的状态,我也需要在取消选中时修改 url。请帮忙。

var $checkes = $('input:checkbox[name="ch"]').change(function () {
    var vals = $checkes.filter(':checked').map(function () {
        return this.value;
    }).get();

    var newurl = document.location.href;
    for (k in vals) {
        newurl = newurl + "+" + vals[k];
    }
    document.location.href = newurl;
    var i = newurl.lastIndexOf('/');
    var checkedOnes = newurl.substr(i + 1).split('+');

    var len = checkedOnes.length;
    for (var i = 2; i < len; i++) {
        document.getElementById(checkedOnes[i]).checked = true;
    }
});

【问题讨论】:

标签: javascript html checkbox


【解决方案1】:

首先,您似乎没有设置任何查询字符串值(URL 末尾问号后的内容)

由于 HTTP 是无状态的,因此您的复选框在页面重新加载后不会保留其状态是有道理的。

如果您使用纯前端技术,解决此问题的方法是在页面加载时通过 JavaScript 设置复选框

您拥有的代码 var i 及以后的代码不应在事件处理程序中。这似乎是您用于将复选框设置为选中或不选中的代码,因此只有在更改复选框时才会触发。但是,页面会在代码执行之前重新加载

我希望这能解决一些问题

【讨论】:

  • 谢谢,有道理。而且,它奏效了。但是,我现在还有一个问题,我需要修剪我的网址,只想要它的第一部分。例如,我的网址是“abcd.com/en/note+note1+imp_1+imp_2+imp_3”,我只需要“abcd.com/en/note+note1”。怎么做!!
  • 首先把格式改成abcd.com/en?...其实问号后面的位应该遵循=的格式,分隔多个id-value与 & 配对。我不记得我头顶上的 JS(目前在我的手机上),但是像 document.location 这样的东西应该可以让你得到你想要的,只要你遵循我解释的格式
  • 顺便说一句,如果您还没有使用它,请查看 Chrome 的开发工具。它们对于弄乱 JS sn-ps 非常有用
猜你喜欢
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多