我有一个页面,用户可以动态地(jQuery)创建一个表。它稍后将作为表格提交。
某些表格单元格中可能包含一个复选框。并非所有表行都具有该复选框。我的目标是在POST数据中包含所有三种可能的状态,以便我的POST阵列都具有相同数量的项目。
1
0
0
有fiddle here基本机制设置(从this answer得到一些小提琴j)。我不确定如何用它来说明提交的表单。
如果我在表格中添加三个项目(基于上面的有序列表),我会得到不同的结果,因此...
这三项都是#1 =
["add_logo"] array(3) {
[0] "1"
[1] "1"
[2] "1"
}
这三项都是#3 =
["add_logo"] array(3) {
[0] "0"
[1] "0"
[2] "0"
}
这三项都是#2 = nothing is POSTed
添加项目2,1,3 = item with unchecked checkbox not included
["add_logo"] array(2) {
[0] "1"
[1] "0"
}
等等......基本上,似乎我根本没有发送未经检查的复选框。我想我只是不明白为什么each()
位可以正常工作,因为它可以将值从on
更改为1
,但无法将值设置为{ {1}}。
我尝试了隐藏的输入位来克服这个驼峰,但它对我不起作用......我在想,因为每个表单条目都没有什么独特之处?
最后,如果我在我链接的答案中添加了0
,则只需将所有复选框值设置为$(this).attr('checked', true);
。
答案 0 :(得分:1)
我想我明白了......
似乎我无法设置未选中复选框的值。从我读过的所有其他问题来看,我想我并不感到惊讶。无论你给他们什么价值,那些未经检查的复选框都没有张贴。
最后,我对提交表单时执行的代码进行了更改。我更改了三元组,如果未选中此框,则尝试将值设置为0
,只需删除复选框并将其替换为隐藏字段(如果未选中)。
所以从这......
$("#submit").click(function () {
$('input:checkbox[name^=add_logo]').each(function () {
$(this).attr('value', $(this).is(':checked') ? '1' : '0');
});
});
......对此...
$("#submit").click(function () {
$('input:checkbox[name^=add_logo]').each(function () {
$(this).prop("checked") ? $(this).attr('value','1') : $(this).html("<input type='hidden' name='add_logo[]' value='0' />");
});
});
当谈到jQuery / javascript时,我很绿,所以我不确定是否会回来咬我,但我还没能打破它。