表单中含有 一个<select type="radio">数据库二级联动,几个<input type="text">
现在想实现每点击一次添加按钮时,增加多一个<select type="radio">数据库二级联动,几个<input type="text">
我想使用JavaScript把表单里的名称用逗号间隔组装成数组,提交给servlet
请大家给个例子吧

解决方案 »

  1.   

    这种方案有很多种,我一般用一个hidden记录名称....再根据名称做方案...
      

  2.   

    此问题可以分为2个小问题:
    1:创建表单。
             可以采用innerHTML或者createElement
    2:获取表单值,传递服务器端
            a)可以采用服务端隐藏控件获取表单值然后在服务器端传送
            b)ajax
            ...
      总之在客户端组装数据,然后在想办法传送到服务器端
      

  3.   

    var i = 1; function AddMore() {
    i++;
    var more = document.getElementById("that");
    var br = document.createElement("br");
    var input = document.createElement("input");
    var text = document.createElement("input");
    var button = document.createElement("input");
    var num = document.createElement("input"); num.type = "hidden";
    num.name = "num";
    num.value = i; input.type = "text";
    input.name = "text" + i; text.type = "text";
    text.name = "key" + i; button.type = "button";
    button.value = "删除"; more.appendChild(br);
    more.appendChild(input);
    more.appendChild(text);
    more.appendChild(button);
    more.appendChild(num); button.onclick = function() {
    i--;
    more.removeChild(br);
    more.removeChild(input);
    more.removeChild(text);
    more.removeChild(button);
    more.removeChild(num);
    };
    }
      

  4.   

    我想获得表单的name该怎么做啊?
      

  5.   

    楼上都说了用createElement再appendChild 或者cloneNode
      

  6.   

    晕我都说了想得到 用JavaScript把表单里的所有的name用逗号间隔组装成数组,提交给servlet 
      

  7.   

    var inputList = document.getElementsByTagName("input");
    for(var i=0;i<inputList. length;i++)
    {
        alert(inputList [i].name);
        //inputList [i].name+','
        //封装数据
    }
      

  8.   

    你的name规则,自己改改,我不知道你要怎么设name<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <script src="js/jquery-1.3.2.min.js"></script>
    </head>
    <body>
    <form action="" method="post">
    <table id="table1" border="1">
    <tr id="tr0"><td><input name="text0" type="text"></td><td><input name="text00" type="text"></td><td><input type="button" value="删除" onClick="delTr(event)"></td></tr>
    </table>
    <input type="button" value="添加行" id="addTr">
    <input type="button" value="所有nane" id="allName">
    </form>
    </body>
    </html> 
    <script language="javascript">
    $(function()
    {
    $('#addTr').click(addTr);
    $('#delTr').click(delTr);
    $('#allName').click(getAllName);
    });
    function addTr()
    {
     $('#tr0').clone(true).appendTo($('#table1'));
      var rowsCount=$('#table1')[0].rows.length;
      $('#table1')[0].rows[ rowsCount-1].id="tr"+(rowsCount-1);
      $('#tr'+(rowsCount-1)).find("input[type=text]")[0].name="text"+(rowsCount-1);
      $('#tr'+(rowsCount-1)).find("input[type=text]")[1].name="text"+(rowsCount-1)+"0";
    }
    function delTr(e)
    {
       var evt=event||e;
       var obj=evt.srcElement || evt.target;
       $(obj).parent().parent().remove();
      //alert(obj.tagName);
    }
    function getAllName()
    {
    var arrText=$('input[type=text]');
    var arrLength=arrText.length;
    var arr=new Array(arrLength);
    for(var i=0;i<arrLength;i++)
    {
        arr[i]=arrText[i].name;
    }
    alert(arr.toString());
    }
    </script>
      

  9.   

    修改一处bug,即name问题,这样你随便删除一行,我的id和name会自动更换
    你的name 规则按我的来就可以
    第几行,第一个文本框的name为(行-1),第二个文本框的name为(行-1+"0")。
    代码<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <script src="js/jquery-1.3.2.min.js"></script>
    </head>
    <body>
    <form action="" method="post">
    <table id="table1" border="1">
    <tr id="tr0"><td><input name="text0" type="text"></td><td><input name="text00" type="text"></td><td><input type="button" value="删除" onClick="delTr(event)"></td></tr>
    </table>
    <input type="button" value="添加行" id="addTr">
    <input type="button" value="所有nane" id="allName">
    </form>
    </body>
    </html> 
    <script language="javascript">
    $(function()
    {
    $('#addTr').click(addTr);
    $('#delTr').click(delTr);
    $('#allName').click(getAllName);
    });
    function addTr()
    {
     $('#tr0').clone(true).appendTo($('#table1'));
      var rowsCount=$('#table1')[0].rows.length;
      $('#table1')[0].rows[ rowsCount-1].id="tr"+(rowsCount-1);
      $('#tr'+(rowsCount-1)).find("input[type=text]")[0].name="text"+(rowsCount-1);
      $('#tr'+(rowsCount-1)).find("input[type=text]")[1].name="text"+(rowsCount-1)+"0";
    }
    function delTr(e)
    {
       var evt=event||e;
       var obj=evt.srcElement || evt.target;
       $(obj).parent().parent().remove();
      //alert(obj.tagName);
      changeTrId();
    }
    function getAllName()
    {
    var arrText=$('input[type=text]');
    var arrLength=arrText.length;
    var arr=new Array(arrLength);
    for(var i=0;i<arrLength;i++)
    {
        arr[i]=arrText[i].name;
    }
    alert(arr.toString());
    }
    function changeTrId()
    {
    var rowArr=$('#table1')[0].rows;
    var rowCount=rowArr.length;
    for(var i=0;i<rowCount;i++)
    {
      rowArr[i].id="tr"+i;
      $("#tr"+i).find("input[type=text]")[0].name="text"+i;
      $("#tr"+i).find("input[type=text]")[1].name="text"+i+"0";
    }
    }
    </script>
      

  10.   

    传值使用ajax,这个我看不见你的服务端,写不了。
      

  11.   

    。有个数据库二级联动 createElement那不是需要写好多东西?
      

  12.   

    联动用Ajax(DWR),用innerHtML输出表格
      

  13.   

    你只是不确定生成的 name 吧~ 在一个容器内新增,例如 div 在提交的时候 执行一段函数 ,函数的功能是 将新增的 标签 的name 赋给已知的标签例如 hidden.valuediv.getElementByTagName('input')  textdiv.getElementByTagName('select')  select