2010-08-01 88 views
1

如问题所述,我试图将一个或多个勾选框值插入到一个数据库字段中,最好以逗号分隔的格式插入。将多个勾选框插入到一个数据库字段中

因此,如果用户选择复选框之一,复选框二,输入到数据库将被插入为tickOne,tickTwo,等等等等

我怎么会去这样做呢? 也许使用jQuery或Javascript?

Thanx提前!

+3

1)没有足够的细节。 2)这样的非规范化是不好的,不要这样做。 – RedFilter 2010-08-01 14:27:07

+2

@RedFilter - 如果这些值只是用于UI显示,非规范化可能并不坏,它可能更有效率......你不能一味地说它很糟糕,你需要更多信息来作出决定,例如,它会被质疑吗? – 2010-08-01 14:32:20

+0

@RedFilter,如果它是一个简单的CRM,他就是一个联系表单经理。反规范化并不总是一件坏事。 – 2010-08-01 14:32:39

回答

2

如果你想传递的值作为一个字符串,比如逗号分隔就像你在jQuery中提到的,你可以设置使用.map()值,就像这样:

$(".mySelector:checkbox").change(function() { 
    var values = $(".mySelector:checkbox:checked").map(function() { 
       return this.value; 
       }).get().join(', '); 
    $("#myHiddenInput").val(values); 
}); 

每当复选框发生变化,它会重新做字符串部分,重新​​序列化结果,所以在回发时它应该是当前的UI选择。 .map()通过mySelector类获得:checked元素的值的数组,然后我们只需执行.join()即可将该数组转换为字符串,并使用.val()将隐藏的输入设置为该字符串。

这假定标记这样的:

<input type="checkbox" class="mySelector" value="tickOne" /> 
<input type="checkbox" class="mySelector" value="tickTwo" /> 
.... 
<input type="hidden" id="myHiddenInput" /> 

You can give it a try here

+0

所以我应该创建一个隐藏的输入字段,然后一旦用户选择了勾号框,他们将被分配给隐藏的输入字段值? – Odyss3us 2010-08-01 14:35:33

+0

@kielie - 是的,如果你想做它的客户端类似的东西...我添加了一个演示/示例标记来更好地说明它:) – 2010-08-01 14:36:12

+0

Thanx a million! ;) – Odyss3us 2010-08-01 16:54:45