通过checkbox循环,并计数每一个选中或取消选中

我遇到了一些问题。 这是一个简单的解释。

我在标准表格上有12个checkbox。 我需要做的是循环通过每个人,并了解哪些是检查,哪些是没有选中。

使用这个,我可以build立一个string,然后input到数据库字段中。 这是一个例子。

(Check1 – 勾选)
(Check2 – 未勾选)
(Check3 – 勾选)

1,0,1

到目前为止,我已经得到了一些代码。

$('input[type=checkbox]').each(function () { if (this.checked) { console.log($(this).val()); } }); 

它完美的工作,除了它只能带回选中的,不是全部。

对不起,新问题。 我有点新jQuery。

要按照所显示的格式准确地生成结果string,可以使用以下命令:

 var sList = ""; $('input[type=checkbox]').each(function () { sList += "(" + $(this).val() + "-" + (this.checked ? "checked" : "not checked") + ")"; }); console.log (sList); 

不过,我同意@SLaks,我认为你应该重新考虑你将存储在数据库中的结构。

编辑 :对不起,我错读了你正在寻找的输出格式。 这是一个更新:

 var sList = ""; $('input[type=checkbox]').each(function () { var sThisVal = (this.checked ? "1" : "0"); sList += (sList=="" ? sThisVal : "," + sThisVal); }); console.log (sList); 

使用select器

你可以像这样获得所有选中的checkbox:

 var boxes = $(":checkbox:checked"); 

而所有非检查如下:

 var nboxes = $(":checkbox:not(:checked)"); 

你可以循环访问这些集合中的任何一个,并存储这些名称。 如果有什么东西不存在,你知道它已经或未被检查。 在PHP中,如果你有一个被检查过的名字数组,你可以简单地做一个in_array()请求来知道是否应该在以后检查任何特定的盒子。

连载

jQuery也有一个序列化方法 ,将维护您的表单控件的状态。 例如,jQuery网站上提供的例子如下:

 single=Single2&multiple=Multiple&multiple=Multiple3&check=check2&radio=radio2 

这将使您能够保持检查元素的信息。

您可以通过编写$(':checkbox').each(...)来遍历所有的checkbox。

如果我正确理解你的问题,你正在寻找下面的代码:

 var str = ""; $(':checkbox').each(function() { str += this.checked ? "1," : "0,"; }); str = str.substr(0, str.length - 1); //Remove the trailing comma 

该代码将循环遍历所有的checkbox,并将1,0,添加到string中。

我认为没有足够的时间关注原文中提出的模式考虑。 所以,这里是任何新手都要考虑的事情。

假设你继续build立这个解决scheme。 所有你的经典值都被合并成一个单一的值并存储在数据库中。 你确实在你的数据库中保存了一点空间,还有一些时间编码。

现在让我们考虑一下,你必须执行在当前checkbox3和4之间添加新checkbox的频繁和简单的任务。你的开发经理,客户,无论什么期望这是一个简单的改变。

所以你把checkbox添加到UI(简单部分)。 无论有多less个checkbox,您的循环代码已经连接了这些值。 你也认为你的数据库字段只是一个varchar或其他stringtypes,所以它应该也很好。

当客户或您尝试查看更改前的数据时会发生什么? 你本质上是从左到右的序列化。 然而,现在3之后的值都是1个字符。 你打算如何处理你现有的所有数据? 你要编写一个应用程序,把它全部从数据库中取出来,处理它,为新的问题位置添加一个默认值,然后把它们全部存回数据库中? 当你每隔一个星期或一个月有几个新值时会发生什么? 如果你移动的位置和jQuery处理他们在不同的顺序呢? 你所有的数据都被洗掉了,必须重新处理才能重新排列。

不提供紧密的关键价值关系的整个概念是ludacris,并会结束让你陷入麻烦,而不是以后。 对于那些你考虑这个,请不要。 对架构更改的其他build议很好。 使用子表格,主表格中的更多字段,问题答案表格等等。只要数据结构可能发生变化,就不要存储未标记的数据。

不知道关于JS …但可以用PHP这样做…

我希望这个链接可以帮助..

http://www.daniweb.com/web-development/php/threads/456092/how-to-store-unchecked-checkboxes-in-database-and-later-retreive-them

 $.extend($.expr[':'], { unchecked: function (obj) { return ((obj.type == 'checkbox' || obj.type == 'radio') && !$(obj).is(':checked')); } }); $("input:checked") $("input:unchecked")