我遇到了一些问题。这是一个简短的解释。
我在标准表格上有12个复选框。我需要做的是遍历每一个并了解哪些被检查以及哪些未被检查。
使用它,然后我可以构建一个字符串,然后我将其输入到数据库字段中。这是一个例子。
(Check1 - 选中)
(Check2 - 未选中)
(Check3 - 选中)
1,0,1
到目前为止,我已经有了这段代码。
$('input[type=checkbox]').each(function () {
if (this.checked) {
console.log($(this).val());
}
});
它完美无缺,只是它只会带回已检查的,而不是全部。
抱歉有新问题。我对jquery有点新鲜。
答案 0 :(得分:112)
要以您显示的格式精确构建结果字符串,您可以使用:
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);
答案 1 :(得分:58)
您可以选中所有选中的复选框:
var boxes = $(":checkbox:checked");
并且所有未经检查的内容如下:
var nboxes = $(":checkbox:not(:checked)");
您只能循环浏览其中一个集合,并存储这些名称。如果没有任何东西,你知道它是否被检查过。在PHP中,如果您有一个已检查的名称数组,您只需执行in_array()
请求即可知道是否应该在以后检查任何特定的框。
jQuery还有一个serialize method,它将维护表单控件的状态。例如,jQuery网站上提供的示例如下:
single=Single2&multiple=Multiple&multiple=Multiple3&check=check2&radio=radio2
这样您就可以保留检查哪些元素的信息。
答案 2 :(得分:15)
您可以通过编写$(':checkbox').each(...)
。
如果我理解你的问题,你正在寻找以下代码:
var str = "";
$(':checkbox').each(function() {
str += this.checked ? "1," : "0,";
});
str = str.substr(0, str.length - 1); //Remove the trailing comma
此代码将遍历所有复选框,并将1,
或0,
添加到字符串中。
答案 3 :(得分:0)
我认为没有足够的时间关注原帖中提出的架构考虑因素。因此,对于任何新手来说,这都需要考虑。
假设您继续构建此解决方案。所有的卑鄙值都会被合并为一个值并存储在数据库中。你确实在数据库中节省了一点空间并且有时间编码。
现在让我们考虑一下你必须执行频繁而简单的任务,即在当前复选框3&之间添加一个新的复选框。 4.您的开发经理,客户,无论期望这是一个简单的改变。
因此,您可以将复选框添加到UI(简单部分)。无论有多少个复选框,循环代码都会连接值。您还认为您的数据库字段只是一个varchar或其他字符串类型,因此它也应该没问题。
当客户或您尝试在更改之前查看数据时会发生什么?你基本上是从左到右序列化。但是,现在3之后的值全部偏离1个字符。您打算如何处理所有现有数据?您是否要编写一个应用程序,将其全部退出数据库,处理它以添加新问题位置的默认值,然后将其全部存储回数据库中?如果您每周或每月分享几个新值,会发生什么?如果您移动位置并且jQuery以不同的顺序处理它们会怎么样?您的所有数据都被清除,必须重新进行重新处理才能重新排列。
没有提供紧密的键值关系的整个概念是ludacris,并且最终会让你早日遇到麻烦。对于那些考虑到这一点的人,请不要。架构更改的其他建议很好。使用子表,主表中的更多字段,问答表等。当数据的结构可能发生变化时,不要存储未标记的数据。
答案 4 :(得分:-1)
$.extend($.expr[':'], {
unchecked: function (obj) {
return ((obj.type == 'checkbox' || obj.type == 'radio') && !$(obj).is(':checked'));
}
});
$("input:checked")
$("input:unchecked")