您好我有不同名字的checbox:
名称 - 小时和价值 - 日。例如:value =“1”表示星期一,name =“0609”表示从06am - 09am。
<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">
我需要接受所有已检查和未检查的输入并按名称组合成数组,例如:如果除星期一以外都检查所有日期
'0609' => 0, 1, 1, 1, 1, 1, 1
我该如何解决这个问题?
我试图使用.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);
答案 0 :(得分:2)
检查一下:
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);
答案 1 :(得分:0)
我认为你可以做到这一点
$("input[name='0609']").each( function () {
//do somethin
});
答案 2 :(得分:0)
首先,循环遍历所有复选框,获取其名称属性,然后创建一个数组(不重复)。
然后,遍历此数组并创建最后注销的对象。
检查控制台并查看您正在获取的对象。
var nm = [];
$('input[type="checkbox"]').each(function() {
var name = $(this).attr('name');
if ($.inArray(name, nm) == -1) {
nm.push(name);
}
});
var arr = [];
for (i=0;i<nm.length;i++) {
var obj = {};
obj.name = nm[i];
var days = obj.days = {};
$('input[name=' + nm[i] + ']').each(function() {
var that = $(this);
var val = that.attr('value');
if (that.is(':checked')) {
days[val] = 1;
} else {
days[val] = 0;
}
});
arr.push(obj);
}
console.log(arr);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" value="1" name="0609">
<input type="checkbox" value="2" name="0609" checked>
<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">
&#13;
答案 3 :(得分:0)
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());
});
的console.log(OBJ);
答案 4 :(得分:0)
这是小提琴http://jsfiddle.net/pratbhoir/d8p04tn5/
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);
}