用于将值从复选框传递到查询字符串的 JavaScript 无法正常工作

标签 javascript jquery

我正在使用 JavaScript。但它无法正常工作。 javascript 用于将复选框中的值传递给查询字符串。

这是我的代码,请帮我定位错误。

<script type="text/javascript">
    function GetOS() {
        $('input[type="checkbox"]').on('change', function (e) {
            var data = {},
                fdata = [],
                loc = $('<a>', { href: window.location })[0];
            $('input[type="checkbox"]').each(function (i) {
                if (this.checked) {
                    if (!data.hasOwnProperty(this.name)) {
                        data[this.name] = [];
                    }
                    data[this.name].push(this.value);
                }
            });
            $.each(data, function (k, v) {
                fdata[k] = [v.join(',')];
            });
            fdata = fdata.join('&');

            $.post('/ajax-post-url/', fdata);
            if (history.pushState) {
                history.pushState(null, null, loc.pathname + '?' + fdata);
            }
        });
    }
    window.onload = GetOS;
</script>


            <div class="panel-body">
            <div class="rowElem">
              <input type="checkbox" name="chbox" id="" value="Color #1" />
              <label>Color #1</label>
            </div>
            <div class="rowElem">
              <input type="checkbox" name="chbox" id="" value="Color #2" />
              <label>Color #2</label>
            </div>
            <div class="rowElem">
              <input type="checkbox" name="chbox" id="" value="Color #3" />
              <label>Color #3</label>
            </div>
          </div>

最佳答案

试试这个:

<script type="text/javascript">
    function GetOS() {
        console.log("rom");
        $('input[type="checkbox"]').on('change', function (e) {
            var data = {},
                fdata = [],
                loc = $('<a>', { href: window.location })[0];
            $('input[type="checkbox"]').each(function (i) {
                if (this.checked) {
                    if (!data.hasOwnProperty(this.name)) {
                        data[this.name] = [];
                    }
                    data[this.name].push(this.value);
                }
            });
            // get the key
            var key = Object.keys(data)[0];
            // and the data
            // it works to without joining
            var fdata = key+"="+data[key].join(',');
            // and if you wanna strip the whitespaces
            // use fdata = fdata.replace(/\s/g,"");
            $.post('/ajax-post-url/', fdata);
            if (history.pushState) {
                history.pushState(null, null, loc.pathname + '?' + fdata);
            }
        });
    }
    window.onload = GetOS;
</script>

关于用于将值从复选框传递到查询字符串的 JavaScript 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35212365/

相关文章:

javascript - 如何从 jQuery DataTables 单元格内的 &lt;input type=date> 获取值?

Javascript:在函数内调用函数并覆盖变量

javascript - 如何使用 HTML、CSS 和 JQuery 在圆形设计中创建交互式导航

javascript - 字符串集合和数组之间的区别

jquery - 无法通过 JQuery 从 Bootstrap DateTimePicker 获取日期对象

javascript - markdown深度图片上传

javascript - 根据用户输入从表中删除行

Javascript未定义函数..但它确实已定义

javascript - 鼠标悬停在一个 span 元素上触发多次

php - 将 jQuery 值传递给 PHP 函数