在for循环

时间:2017-07-09 09:54:41

标签: javascript html ruby forms sinatra

在我的代码中,我使用代码段中的代码基于用户输入创建了字段集的重复副本。我现在的问题是,当用户提交表单时,params Hash不会考虑来自fieldset的不同实例的值。最后一个值将覆盖以前的所有值。在下面的当前场景中的一个例子是params Hash。  {“member”=>“2”,“lte_freq1”=>“4”,“ru_type”=>“RRU”,“4_way_rx”=>“否”} 但是,我想要的输出如下所示。这里是member = 2的值,因此附加了两个fieldset实例:  {“member”=>“2”,“lte_freq1_1”=>“6”,“ru_type_1”=>“RU”,   “4_way_rx_1”=>“是”,“lte_freq1_2”=>“4”,“ru_type_2”=>“RRU”,   “4_way_rx_2”=>“否”} $(文件)。就绪(函数(){ $( “按钮”)。点击(函数(){ var number = document.getElementById(“member”)。value; var repeat = $('fieldset'); var克隆; for(i = 1; i< number; i ++){     cloned = repeat.clone(true);     cloned.appendTo( 'sector_prop。'); }  }); }); <!DOCTYPE html> < HTML> < HEAD> < script src =“https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js”>< / script> &LT峰; br> &LT峰; br>  &LT峰; br>  &LT峰; br> < /头> <身体GT; < form action =“/ form”method =“post”> < div class =“textbox”> <图例>&LT b取代;射频参数< / b>< / legend> &LT峰; br> 扇区数(LTE)< br> &LT峰; br> < input type =“text”id =“member”name =“member”value =“”> &LT峰; br> &LT峰; br> < button>生成扇区属性< / button> &LT峰; br> &LT峰; br> < div class =“sector_prop”> <字段集> 主LTE载波(为AWS 5的站点850选择最低频率,AWS 用于频带4和用于频带2的PCS)< br> &LT峰; br> < select name =“lte_freq1”> < option value =“6”> 850< / option> < option value =“2”> AWS< / option> < option value =“4”> PCS< / option> < /选择> &LT峰; br> &LT峰; br> 无线电类型(机架安装选择“RU”或远程无线电选择RRU):< br> &LT峰; br> < select name =“ru_type”>   < option value =“RU”> RU< / option>   < option value =“RRU”> RRU< / option> < /选择> &LT峰; br> &LT峰; br> 4路Rx(选择“是”或“否”):< br> &LT峰; br> < select name =“4_way_rx”>   < option value =“是”>是< / option>   < option value =“No”> No< / option> < /选择> &LT峰; br> &LT峰; br>   < /字段集> < / DIV> &LT峰; br> < input type =“submit”> < /形式> &LT峰; br> &LT峰; br> < /体>

1 个答案:

答案 0 :(得分:1)

您正在克隆元素,它不会神奇地更新字段名称。因此,您需要手动获取索引并在克隆时更新新元素的名称:

$(document).ready(function(){
  $("button").click(function(){
    var number = document.getElementById("member").value;
    var repeat = $('fieldset');
    var cloned;

    for (i=1;i<number;i++){
      cloned = repeat.clone(true);
      current_name = cloned.find('select').attr('name');
      cloned.find('select').prop('name', current_name + '_' + i);
      cloned.appendTo('.sector_prop');
    }
  });
});