【问题标题】:Change radio input name - disappear radio checked更改收音机输入名称 - 检查消失收音机
【发布时间】:2017-11-20 15:10:01
【问题描述】:

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

$('.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 代码以在更改输入名称后保持无线电输入检查值。

【问题讨论】:

  • 我没有看到您的表单有任何错误。
  • 第二个框不显示输入单选选项(prntscr.com/fl5794)

标签: javascript jquery html input radio


【解决方案1】:

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

<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/

【讨论】:

  • 但我不想更改名称,我想用框 [{number}][{Name}] 保存名称。我可能有一些带有字段的框,例如带有输入单选框的 6-9 框,其中名称为框 [0]、框 [1]、框 [2]、...等。
  • 如果单选按钮名称相同,无论方括号如何,一次只能检查其中一个。这就是单选按钮的工作方式。对此你无能为力。
  • 也许我可以用 tmp 变量旧值,设置新并将 tmp 设置为新名称?
猜你喜欢
  • 2019-05-08
  • 2021-09-28
  • 1970-01-01
  • 1970-01-01
  • 2013-04-26
  • 1970-01-01
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多