我的ASP程序在提交时要求name不能有重命名的, 因为要根据name再select Where 不同数据!所以必须用js保证他的name的唯一性。
对于在删除时遍历该行的ipnut的name时进行更新,
求net_lover 版主给示例改进下,小弟的确很迷茫!

解决方案 »

  1.   

    而且必须保证表格中同一列的input 的 name 值是 连续的例如:列1          列2
    name1    namess1
    name2    namess2
    name3    namess3
    name4    namess4
      

  2.   

    思路大致这样的
    var allNameIndex //用来保存你增加的编号,删除的时候,从里面删除
    var i = 0;增加的数目,只进行增加如
    var allNameIndex = ",";
    增加一行
    i++
    allNameIndex += i + ","
    真实增加的代码删除一行,你只需记住删除的需要,比如5,
    allNameIndex = allNameIndex.replace("," + r + ",",",")你把allNameIndex放在隐藏域中提交,注意最好删除开始和结束的“,”后台Dim allNameIndex
    allNameIndex = Split(Request("allNameIndex"),",")For i =LBound(allNameIndex ) to UBound(allNameIndex )
    Request.Form("表单名称" + i)即可
      

  3.   

    此方法基本上没改进我的JS我还是想要个改进的JS,因为我的提交的表格内容太复杂,太多了。前台出错后台校正的思路与我想法相背。
      

  4.   

    //删除<tr/>
        var deltr =function(index)
        {
            var _len = $("#tab tr").length;
           $("tr[id='"+index+"']").remove();//删除当前行
    } 直接这样不就把整个行删除了。你想要什么效果。
      

  5.   

    删除后,要保证被删除行的下一行(后几行)input控件name及value自动更正例如:
    列1          列2
    name1    namess1
    name2    namess2
    name3    namess3
    name4    namess4假设第二行被删除,
    则原来的第三,第四行,name自动减1,
    原来第三行< input name = "color3">,现在变成<input name = "color2">
      

  6.   

    不多说了,直接上代码,里面有注释
    <!-- include file="public/isuser.asp" -->
      
    <html> 
    <head> 
    <title></title>
    <link href="style.css" rel="stylesheet" type="text/css" media="all" /> 
    <script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>  
    <script type="text/javascript"> 
    var   idx     =   1;//全局保存序号,初始值为1$(document).ready(function(){     $("#tab tr").attr("align","center"); 
         
        $("#but").click(function(){
          var html  =   "<tr id={0} align='center'>" 
                        +"<td>{0}</td>" 
                        +"<td><select name=ColorName{0} id='desc{0}' style=width:auto;><option value=黑色 >黑色</option><option value=紫色 >紫色</option><option value=绿色 >绿色</option></select></td>" 
                        +"<td><input type='text' class='number' size='6' maxlength='6' value='0' name='S90_{0}' id='D_90{0}' /></td>" 
                        +"<td><input type='text' class='number' size='6' maxlength='6' value='0' name='S100_{0}' id='D_100{0}' /></td>" 
                        +"<td><input type='text' class='number' size='6' maxlength='6' value='0' name='S110_{0}' id='D_110{0}' /></td>" 
                        +"<td><input type='text' class='number' size='6' maxlength='6' value='0' name='S120_{0}' id='D_120{0}' /></td>" 
                        +"<td><input type='text' class='number' size='6' maxlength='6' value='0' name='S130_{0}' id='D_130{0}' /></td>" 
                        +"<td><input type='text' class='number' size='6' maxlength='6' value='0' name='S140_{0}' id='D_140{0}' /></td>" 
                        +"<td><a href=\'#\' onclick=\'deltr({0})\'>删除</a></td>" 
                        +"</tr>";  
           html    =   html.replace(/\{0\}/g,idx++);//自增序号,且替换掉模板中的值     
           $("#tab").append(html);//追加行              
        });
    }) //删除<tr/> 
    var deltr =function(index){ 
        $("tr[id='"+index+"']").remove();//删除当前行
        
        var size =  $("#tab tr").size();//当前行数    //除开表头。从第二行开始遍历所有tr
        $("#tab tr:gt(0)").each(function(i,n){
            var index   =   i+1,//当前行新的序号
                tr      =   $(this),//当前行
                id      =   tr.attr("id");//当前行ID
            
            //更新第一列的内容::序号
            tr.find('td')
                .eq(0)
                .text(index);
                
            //更新select的name和id    
            tr.find('#desc'+id)
                .attr('name','ColorName'+index)
                .attr('id','desc'+index);
                
            /*
                更新尺码的name和id
                这里是以你例子中数据,直接指定了[90,100,110,120,130,140]
                如果不是固定的,可以用类似于下面的方法去动态获取
                var th  =   $("#tab tr:first th"),
                    arr =   [];
                for(var i=2;i<th.size()-1;i++){
                    arr.push(th.eq(i).text())
                }
            */    
            $.each([90,100,110,120,130,140],function(j,n){
                tr.find('#D_'+ n + id)
                    .attr('name','S'+ n +'_' + index)
                    .attr('id','D_'+ n +'' + index);
            });
            
            //更新当前行ID
            tr.attr('id',index);
        });
        //重置全局序号
        idx = size;
     } </script> 
    </head> 
    <body> 
    <div id="inner-table-hpzl"> 
    <form action="" method="get"> 
      <table id="tab" border="1" width="60%" align="center" style="margin-top:20px"> 
        <tr> 
    <th width=30 align=center>序号</th> 
    <th width=110 align=center>颜色</th> 
    <th width=50 align=center>90</th><th width=50 align=center>100</th><th width=50 align=center>110</th><th width=50 align=center>120</th><th width=50 align=center>130</th><th width=50 align=center>140</th> 
    <th width=28 align=center>操作</th> 
    </tr> 
      </table> 
      <div style="border:2px;border-color:#00CC00;margin-left:20%;margin-top:20px"> 
        <input type="button" id="but" value="增加"/> 
      </div> 
    </form> 
      </div> 
      <input name="" type="text" maxlength='6'> 
        <input name="" type="submit"/> intK<input  name=intK> intS<input  name=intS> 
    </body> 
    </html> 
      

  7.   

    name只是前后台传递数据用,跟数据、跟显示、跟存入数据库没有任何关系,你为何非要
    input控件name及value自动更正??
      

  8.   

    不好意思,刚才停电了。
    ----------------------------------------------------因为我的后台程序要根据同一行的各name的值综合查询该条(行)记录是否符合要求。
    例如 出货单 里要对每一行的商品进行库存验证。
    ----------------------------------------------------
    谢谢 crying_boy 老师,您的代码好标准,正在努力学习吸收中!!
      

  9.   

    ASP处理多个同名的表单元素是没有问题的,遍历即可,没有必要在前台改变。
    另外如果要在前台改变在提交前重新命名一次即可,不用每次删除行的时候改来改去