2017-06-18 63 views
0

我有一个关于通过框顺序在名称属性中更改输入号码的问题。当我在第一个框中更改输入名称时,第二个带有无线电输入的框会丢失选中的值。更改无线电输入名称 - 消失无线电选中

$('.container').find('.box').each(function (idx) { 
      $(this).find('input').each(function() { 
       let field = $(this); 
       let fieldName = field.attr('name'); 
       let mIndex = 0; 

       if (fieldName.length !== 0) { 
        field.attr('name', fieldName.replace(
         /\[\d+]/g, 
         function (match, pos, original) { 
          return mIndex++ === 0 ? '[' + idx + ']' : match; 
         })); 
        field.attr('id', field.attr('name').replace(/[\[\]]/g, '#').replace(/\#+/g, '-').replace(/[-]+$/g, '')); 
        field.closest('.field').children('label').attr('for', field.attr('id')) 
       } 
      }); 

这里是我的代码示例:https://jsfiddle.net/pbLkabhe/

我的问题是如何解决的Javascript代码保持无线电输入检查后改变输入名称值。

+0

我没有看到你的形式的任何故障。 –

+0

第二个箱子不显示输入收音机检查选项(http://prntscr.com/fl5794) – Matt

回答

0

所有的收音机都被视为同一个收音机组,因为它们具有相同的名称(方形背景不会使它们成为一个单独的组)。这意味着只有其中一个会被检查。我已经改变了第二套单选按钮的名称,所以现在两套收音机都有正确的收音机。

<label> 
    <input id="box-0-radio" name="hello[0][radio]" type="radio" value="0" checked="checked">   
    Option 3 
</label> 
<label> 
    <input id="box-0-radio" name="hello[0][radio]" type="radio" value="1"> 
    Option 4 
</label> 

https://jsfiddle.net/pbLkabhe/1/

+0

但我不想更改名称,我想保存名称与框[{number}] [{Name}]。我可能会有一些带有字段的框,例如带有输入收音机的6-9框,其中名称是框[0],框[1],框[2],...等。 – Matt

+0

如果一个单选按钮具有相同的名称,不管方括号如何,一次只能检查其中的一个。这就是单选按钮的工作原理。对此你无能为力。 – WizardCoder

+0

也许我可以用tmp变量做旧值,设置新值并将tmp设置为新名称? – Matt