<form>
例如:
<input name = 'filed[]' type = 'checkBox' value = 'value_1'> text_1
<input type = 'filed[]' value = 'value_2'> text_2
<input type = 'filed[]' value = 'value_3'> text_3
<input type = 'filed[]' value = 'value_4'> text_4
</form>我现在想把这个字段和数据库里的field 字段用json 格关联起来。假设数据库里的为
{value2:test2,value3:test3}则读取数据后表单里的 value_2 和value_3 为选中状态然后如果选择改变一下,也可以存到数据库中,例如取消value_3 ,然后选中value_4
则存到数据库后为 {value2:test2,value4:test4}请教一下大家,如何处理。
<form id="form1">
<input name = 'filed[]' type = 'checkBox' value = 'value_1' checked="checked"/> text_1
<input name = 'filed[]' type = 'checkBox' value = 'value_2' /> text_2
<input name = 'filed[]' type = 'checkBox' value = 'value_3' /> text_3
<input name = 'filed[]' type = 'checkBox' value = 'value_4' /> text_4
</form>
var data = {value_2:'test2',value_3:'test3'};
var fileds = document.getElementById('form1').getElementsByTagName("input")
for (var j=0;j<fileds.length;j++) {
for (i in data) {
if (i == fileds[j].value) {
fileds[j].checked = "checked";
};
}
}
如果你只是要判断选中 直接保存选中的value就可以了
当然楼主可能有别的需求
js中获得选中的checkbox的value和值 拼成json传到后台 或者传到后台再转成json格式
数据库里读取后 将json转成数组 $array = json_decode($str,true); 然后再前台循环判断选中
重新选择后 后台直接update原有字段
<input name = 'filed[]' type = 'checkBox' value = 'value_1' checked="checked"/> text_1
<input name = 'filed[]' type = 'checkBox' value = 'value_2' /> text_2
<input name = 'filed[]' type = 'checkBox' value = 'value_3' /> text_3
<input name = 'filed[]' type = 'checkBox' value = 'value_4' /> text_4
</form>如果text_2的值是有规律的话,可以根据value的值去获取,这样text_2 字段可以不用传递到后台了,
text_2这样的值应该是固定的吧,也可以根据value的值从数据库中获取啊,
LZ能把这些说的再清楚点吗,还有数据库表的设计, 如果js传值的话,可能会跟一串参数...
<input id = "hide" name = "hide" type="hidden" value="" />
</form>var data = new Array();
var allNodes = document.getElementById('form1').childNodes
for (var j=0;j<filedsNodes.length;j++) {
if ('checkbox' == filedsNodes[j].type) {
data.push(filedsNodes[j].value + ":" + filedsNodes[j+1].textContent);
}
}
document.getElementById("hide").value = "{" + data.join(',') + "}";
楼主如果对前端感兴趣不如看看JS吧,其实用jquery的话更简单,也就两三句代码就搞定了。
{value2:test2,value3:test3}
===============================================
你构造的form不够简便
可以这样构造,json_encode,json_decode够用了吧?
<form>
<input name = 'filed[value1]' type = 'checkBox' value = 'test1'> text_1
<input name = 'filed[value2]' value = 'test2'> text_2
<input name = 'filed[value3]' value = 'test3'> text_3
<input name = 'filed[value4]' value = 'test4'> text_4
</form>
PS:上面的代码有点问题。。textContent不支持IE,应该用filedsNodes[j+1].data
var data = {value_2:'test2',value_3:'test3'};
var fileds = document.getElementById('form1').getElementsByTagName("input")
for (var j=0;j<fileds.length;j++) {
for (i in data) {
if (i == fileds[j].value) {
fileds[j].checked = "checked";
};
}
}
然后提交数据时靠js拼装。谢谢大家,这种来一个写一个的方法我是可以实现的。我可能想得有点多了,我希望数据方便的在html[表单元素] 数据库中进进行转换。我也想过通过值用 ^,之类的将多个数据标记一下,等等方法,现在很想把这块好好的思考一下。那个问题就用来抛砖引玉的,更希望的是了解,如何用中间数据形式,例如json,xml来进行表单和数据库的方便有效的转换,并应对各种不同的显示效果。
例如
复选.
多图上传
mul-select 中的几个选中项
递归数据这里我非常的感谢家,请多提供点思路,抽像点,实际点的都成。
//例如:构造不错,但这样就解决了两个值的问题。
<form>
<input name = 'filed[value1]' type = 'checkBox' value = 'test1'> text_1
<input name = 'filed[value2]' value = 'test2'> text_2
<input name = 'filed[value3]' value = 'test3'> text_3
<input name = 'filed[value4]' value = 'test4'> text_4
</form>