2017-06-18 77 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