我有一些HTML表单,如下所示:
<input type='checkbox' name='lecture' value='1' >
<input type='checkbox' name='lecture' value='2' >
<input type='checkbox' name='lecture' value='3' >
<input type='checkbox' name='lecture' value='4' >
我还有一些jQuery代码,它将所有选中的值添加到数组中,并且此数组转到输入值:
$('#separate_course_list').on("change", ":checkbox", function() {
var values = $('input:checkbox:checked').map(function() {
return this.value;
}).get(); // ["1", "2", "4"]
$("input[name='comment']").val(values); //this input saves array
});
在console.log
中,我有这个(让我假装先检查第一个复选框,然后是第三个,然后是第二个):
["1", "815643", "753327", "752023"] // checked first checkbox
["1", "3", "815643", "753327", "752023"]//checked third checkbox
["1", "3", "2", "815643", "753327", "752023"]// checked second checkbox
slice(-1,3)
无效。
答案 0 :(得分:1)
为什么从-1开始切片?
切片方法的第一个参数是您要删除的第一个索引,第二个是您要删除的数据的数量
var array = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
array.splice(1,3);
输出应该是:
Orange,Lemon
答案 1 :(得分:0)
从根本上说,您的语法是错误。很抱歉,slice
的语法是:
arr.slice([begin[, end]])
当你给:
slice(-1, 3)
数组的开头不能为-1
。所以你必须寻找:
slice(3, -1)
从索引3
开始,在最后一个之前结束,留下最后一个,如果这就是你要找的东西。
答案 2 :(得分:0)
您的选择器正在考虑页面上已选中的所有复选框,因此额外值是其他一些复选框,而是使用.map
上的input:checkbox:checked[name="lecture"]
$('#separate_course_list').on("change", ":checkbox", function () {
var values = $('input:checkbox:checked[name="lecture"]').map(function () {
return this.value;
}).get(); // ["1", "2", "4"]
$("input[name='comment']").val(values); //this input saves array
});
答案 3 :(得分:0)
如果您只想确定最后检查过哪个复选框,则可以使用下面的代码段。如果您想要所有选中的复选框,只需使用slice(0,3)
。
a= ["1", "815643", "753327", "752023"] // checked first checkbox
b = ["1", "3", "815643", "753327", "752023"] // checked third checkbox
c = ["1", "3", "2", "815643", "753327", "752023"]// checked second checkbox
function IsCheckBox(value) {
return value < 4;
}
document.write("Checked checkbox " + a.slice(0,3).filter(IsCheckBox).slice(-1)[0] +'<br>')
document.write("Checked checkbox " + b.slice(0,3).filter(IsCheckBox).slice(-1)[0] +'<br>')
document.write("Checked checkbox " + c.slice(0,3).filter(IsCheckBox).slice(-1)[0] +'<br>')
//Alternatively if you want all checked checkboxed this will suffice
document.write("Checked checkboxes " + c.slice(0,3))
&#13;