<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}请教一下大家,如何处理。

解决方案 »

  1.   


    <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";
    };
    }
    }
      

  2.   

    我说下我的思路吧
    如果你只是要判断选中 直接保存选中的value就可以了 
    当然楼主可能有别的需求 
    js中获得选中的checkbox的value和值 拼成json传到后台 或者传到后台再转成json格式 
    数据库里读取后 将json转成数组 $array = json_decode($str,true); 然后再前台循环判断选中 
    重新选择后 后台直接update原有字段
      

  3.   

    嗯,我现在就是想着一个checkBox 带n个相关连的值过去。或许这本身就是一种错误,带个键值就好了,其它的交给其它的位置去处理。
      

  4.   

    <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>如果text_2的值是有规律的话,可以根据value的值去获取,这样text_2 字段可以不用传递到后台了,
    text_2这样的值应该是固定的吧,也可以根据value的值从数据库中获取啊,
    LZ能把这些说的再清楚点吗,还有数据库表的设计, 如果js传值的话,可能会跟一串参数...
      

  5.   

    <form id="form2" action="" method="post">
    <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的话更简单,也就两三句代码就搞定了。
      

  6.   

    假设数据库里的为 
    {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>
      

  7.   

    这样省事多了- -|
    PS:上面的代码有点问题。。textContent不支持IE,应该用filedsNodes[j+1].data
      

  8.   

    仔细想想,其实是缺少一套好的中间数据交换的方案。
    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>
      

  9.   

    如果你对json情有独钟,不如看下Extjs。或者自己写个全局的js也很方便。
      

  10.   

    选中一个就ajax一个后台,取消一个就ajax一个后台