Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery获取所有复选框和按复选框名称分组_Javascript_Jquery - Fatal编程技术网

Javascript Jquery获取所有复选框和按复选框名称分组

Javascript Jquery获取所有复选框和按复选框名称分组,javascript,jquery,Javascript,Jquery,嗨,我有不同名字的支票盒: 名称-小时,值-天。例如:value=“1”表示星期一,name=“0609”表示从上午6点到上午9点 <input type="checkbox" value="1" name="0609"> <input type="checkbox" value="2" name="0609"> ... <input type="checkbox" value="7" name="0609"> <input type="checkbo

嗨,我有不同名字的支票盒:

名称-小时,值-天。例如:value=“1”表示星期一,name=“0609”表示从上午6点到上午9点

<input type="checkbox" value="1" name="0609">
<input type="checkbox" value="2" name="0609">
...
<input type="checkbox" value="7" name="0609">

<input type="checkbox" value="1" name="0912">
<input type="checkbox" value="2" name="0912">
...
<input type="checkbox" value="7" name="0912">
我怎样才能解决这个问题

我试图使用.map,但我得到了未分组的值

        var valuess = $('input:checked').map(function() {
            return this.value;
        }).get();
        console.log(valuess);
更新:

        var obj = {}; // Define object

        // Loop over all checkboxes
        $('input[type=checkbox]').each(function() {
            var name = $(this).attr('name'); // Get name of this checkbox
            var sThisVal = (this.checked ? "1" : "0");
            if (obj[name]) {
                obj[name].push(sThisVal); // Push value
            } else {
                obj[name] = [sThisVal]; // Create array and push value
            }
        });
        console.log(obj);
选中此项:

var obj = {}; // Define object

// Loop over all checkboxes
$(':checkbox').each(function() {
    var name = $(this).attr('name'); // Get name of this checkbox

    if (obj[name]) {
        obj[name].push($(this).val()); // Push value
    } else {
        obj[name] = [$(this).val()]; // Create array and push value
    }
});
console.log(obj);

我想你能做到

$("input[name='0609']").each( function () {
  //do somethin
});

首先,循环检查所有复选框,获取它们的名称属性,并创建一个then数组(无重复项)

然后,循环遍历该数组并创建最后注销的对象

检查控制台并查看正在获取的对象

var nm=[];
$('input[type=“checkbox”]”)。每个(函数(){
var name=$(this.attr('name');
如果($.inArray(名称,nm)=-1){
nm.push(名称);
}
});
var-arr=[];
对于(i=0;i
console.log(obj);

这是小提琴


你需要它做什么?如果你要发送它,使用像
0609[]
这样的名称并让服务器端来解决可能会更容易些?是的,我需要通过ajax发送以保存在DB中。使用类似以下数组:$hours=array(“0609”=>array(1,1,1,1,1,1,1,1),“0912”=>array(1,1,1,1,1),“1415”=>数组(1,1,1,1,1,1,1),“1518”=>数组(1,1,1,1,1,1,1),“1821”=>数组(1,1,1,1,1,1,1,1),“2124”=>数组(1,1,1,1,1,1,1),“2406”=>数组(1,1,1,1),然后在名称中使用括号,并
serialize()
获取数据,然后找出如何在服务器上的正确位置获取数据。是否希望1表示选中,0表示未选中-您没有将复选框的值存储在任何位置,或者这一点永远不会改变?与其传递0和1,为什么不只传递复选框的值?是的,我希望1表示checked和0表示否,我将通过数据库中的Ajax存储发送。这不是
OP
想要的。如果有100个复选框?每个都有100个
?他想要所有复选框。所以它是给定的。已经指定了名称,所以名称相同,谢谢你的一点更正,它就像一个符咒!
$("input[name='0609']").each( function () {
  //do somethin
});
var obj = {};
obj.checked = {};
obj.unchecked = {};
$(':checkbox').each(function() {
//console.log(this);
$this = $(this);
var key = $this.attr("checked") ? "checked" : "unchecked";
var index = $this.attr("name");
if(!obj[key][index]) {
  obj[key][index] = [];
}
obj[key][index].push($this.val());

});
function getData() {
    var obj = {}; // Define object
    // Loop over all checkboxes
    $(':checkbox').each(function () {
        var name = $(this).attr('name'); // Get name of this checkbox
        var isChecked = 0;
        if ($(this).is(":checked")) {
            isChecked = 1;
        }
        var dayIndex = $(this).val() - 1; //Get the dayIndex from value
        if (obj[name]) {
            obj[name][dayIndex] = isChecked; //set 1 to the value
        } else {
            obj[name] = [0, 0, 0, 0, 0, 0, 0]; // Create array and push value
            obj[name][dayIndex] = isChecked; //Set 1 to the array
        }
    });
    console.log(obj);
}