有一个表单,循环出一个下拉框后,把每个 选中的下拉框的文字 赋值给name是allbatch[]的隐藏域,现在的结果,所有的结果都在一行 如何遍历使之对应 第一个select 的结果赋值给第一个allbatch 
求大神帮忙,顺便看看如何简化这段 创建表格的代码。
  for( i =0;i<mk_l;i++){ 
      op+='<option value="'+mk[i]['expiry_date']+'">'+mk[i]['batch_no']+'('+mk[i]['goods_number']+')'+'</option>'; 
           } 
            var tp="<select   onchange='return $(\""+'#starttimeid'+($('#mainTable').find('tr').length++)+"\")[0].value= $(\"#"+gd['goods_id']+'_'+($('#mainTable').find('tr').length++)+" option:selected\").val()' name='batch_no[]' id='"+gd['goods_id']+'_'+($('#mainTable').find('tr').length++)+"'><option value='0'>请选批号</option>"+op+"</select>";
     var list_str = "<tr id='"+($('#mainTable').find('tr').length++)+"'>" 
        + "<td align='center' style='auto' >"
        + ($("#mainTable").find("tr").length++)
        + "</td>" 
        + "<td align='center' style='auto' >"+tp+"<input type='hidden'   name='allbatch[]' value='' /> <input type='hidden' name='goodsid[]' value='"+gd['goods_id']+"' /><input type='hidden' name='goodsname[]' value='"+gd['goods_name']+"' /></td>"
        + "<td align='center' style='auto' > <input type='text' readonly='readonly' name='starttime[]' value='' maxlength='60' size='20'  id='starttimeid"+($('#mainTable').find('tr').length++)+"'/> </td>"
        + "<td align='center' style='auto' ><input type='text' name='sum[]' value='' /></td>"
        + "<td align='center' style='auto' ><input name='del' onclick='$(\"tr[id="+($('#mainTable').find('tr').length++)+"]\").remove()'  type='button' value='删除'/></td>" 
        + "</tr>";
        $("#mainTable").append(list_str);
     
      }          $('#lastinput').click(function(){          var len= $('#mainTable').find('tr').length;
           if(len <2){
            alert('请添加商品');
              return false; 
      }else{        
         var batch = $("select[name=batch_no[]]").find("option:selected").text();
         $("input[name=allbatch[]]").val(batch);
      
         /*$("select").each(function(){
         // var batch =  $("select[name=batch_no[]]").find("option:selected").text();
           var batch = $(this).children("option:selected").text()
             $("input[name=allbatch[]]").each(function(){
              $(this).val(batch);
            })
               
          }) */
selectJavaScriptinput遍历赋值

解决方案 »

  1.   

    var list_str = "<tr id='"+($('#mainTable').find('tr').length++)+"'>" 
            + "<td align='center' style='auto' >"
            + ($("#mainTable").find("tr").length++)
            + "</td>" 
            + "<td align='center' style='auto' >"+tp+"<input type='hidden'   name='allbatch[]' value='' /> <input type='hidden' name='goodsid[]' value='"+gd['goods_id']+"' /><input type='hidden' name='goodsname[]' value='"+gd['goods_name']+"' /></td>"
            + "<td align='center' style='auto' > <input type='text' readonly='readonly' name='starttime[]' value='' maxlength='60' size='20'  id='starttimeid"+($('#mainTable').find('tr').length++)+"'/> </td>"
            + "<td align='center' style='auto' ><input type='text' name='sum[]' value='' /></td>"
            + "<td align='center' style='auto' ><input name='del' onclick='$(\"tr[id="+($('#mainTable').find('tr').length++)+"]\").remove()'  type='button' value='删除'/></td>" 
            + "</tr>";
            $("#mainTable").append(list_str);
          
          }    
     这段是创建表格
    for( i =0;i<mk_l;i++){ 
          op+='<option value="'+mk[i]['expiry_date']+'">'+mk[i]['batch_no']+'('+mk[i]['goods_number']+')'+'</option>'; 
               } 
                var tp="<select   onchange='return $(\""+'#starttimeid'+($('#mainTable').find('tr').length++)+"\")[0].value= $(\"#"+gd['goods_id']+'_'+($('#mainTable').find('tr').length++)+" option:selected\").val()' name='batch_no[]' id='"+gd['goods_id']+'_'+($('#mainTable').find('tr').length++)+"'>
    <option value='0'>请选批号</option>"+op+"</select>"; 
    这段是创建表格中的 下拉框问题是把下来框选中的内容 赋值到后面的input中去 
     var batch = $("select[name=batch_no[]]").find("option:selected").text();
             $("input[name=allbatch[]]").val(batch);
           
             /*$("select").each(function(){
             // var batch =  $("select[name=batch_no[]]").find("option:selected").text();
               var batch = $(this).children("option:selected").text()
                 $("input[name=allbatch[]]").each(function(){
                  $(this).val(batch);
                })
                    
              }) */就是这里怎么写
      

  2.   

    首先改一下创建下拉框的代码,实在是看不下去了。for( i =0;i<mk_l;i++){ 
          op+='<option value="'+mk[i]['expiry_date']+'">'+mk[i]['batch_no']+'('+mk[i]['goods_number']+')'+'</option>'; 

    var len = $('#mainTable').find('tr').length;
    var tp="<select name='batch_no[]' id='"+gd['goods_id']+'_'+(len++)+"'><option value='0'>请选批号</option>"+op+"</select>"; 
    下面绑定change
    $('select').change(function(){
        var selected = $(this).find('option:selected').text();
        var td = $(this).parent();
        td.find('input[name=allbatch[]]').val(selected);
    });
      

  3.   

    谢谢 
    $('select').change(function(){
        var selected = $(this).find('option:selected').text();
        var td = $(this).parent();
        td.find('input[name=allbatch[]]').val(selected);
    }); 这段没有绑定上
    之前
      
     var batch = $("select[name=batch_no[]]").find("option:selected").text();
             $("input[name=allbatch[]]").val(batch);的返回值是这个样子的
    [allbatch] => Array
            (
                [0] => 2323(2)3(1)
                [1] => 2323(2)3(1)
            )