Javascript Jquery获取所有复选框和按复选框名称分组
嗨,我有不同名字的支票盒: 名称-小时,值-天。例如:value=“1”表示星期一,name=“0609”表示从上午6点到上午9点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
<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);
}