javascript - 如何为每个 radio 输入组分配不同的名称

标签 javascript jquery

我正在寻找一种解决方案来动态更改一组输入单选按钮的名称。

我正在创建一个 travel itinerary其中用户选择“国内”或“国际”。该选择将隐藏/显示下面相应的州/国家/地区下拉列表。可能有多个目的地,因此,我需要多个州/国家选择器。我遇到的问题是所有输入都具有相同的名称,因此在任何给定时间只有一个按钮会显示为“已选中”。

代码片段将通过 .ssi 进入,因此我不能只对输入名称进行硬编码。我需要一个 JavaScript/jQuery 方法来随着添加更多目的地而动态更改它。默认为“目的地”。我希望每个单选按钮组的名称为“destination1”、“destination2”等。

这是 HTML 的一个非常淡化的版本(不是在寻找关于基于表格的布局的辩论。我的团队已经对此进行了讨论):

<table>
  <tbody>
    <tr>
      <td colspan="2">
        <input type="radio" checked="checked" name="destination" class="js-trigger" data-destination="stateForm"> Domestic
        <input type="radio" name="destination" class="js-trigger" data-destination="countryForm"> International
      </td>
    </tr>
    <tr>
      <td>Destination:</td>
      <td>
        <form class="stateForm list">
          <select name="State" id="state-selector" autofocus="autofocus" autocorrect="off" autocomplete="off">
            <option value="Select State" selected="selected"></option>
            <option value="Alabama" data-alternative-spellings="AL">Alabama</option>
            <option value="Alaska" data-alternative-spellings="AK">Alaska</option>
            <option value="Etc" data-alternative-spellings="Etc">Etc</option>
          </select>
        </form><!-- End State Form -->
        <form class="countryForm list">
          <select name="Country" id="country-selector" autofocus="autofocus" autocorrect="off" autocomplete="off">
            <option value="Select Country" selected="selected"></option>
            <option value="Afghanistan" data-alternative-spellings="AF افغانستان">Afghanistan</option>
            <option value="Åland Islands" data-alternative-spellings="AX Aaland Aland" data-relevancy-booster="0.5">Åland Islands</option>
            <option value="Etc" data-alternative-spellings="Etc">Etc</option>
          </select>
        </form><!-- End Country Form -->
      </td>
    </tr>
  </tbody>
</table>

这是我的 fiddle :http://jsfiddle.net/Currell/9sr5rkjy/2/

我是一个 JavaScript 初学者,所以如果我的流程、术语或代码有点不对劲,请原谅我。

最佳答案

您可以通过添加以下内容来重新命名它们:

var counter = 0;
$('table').each(function(){
    $(this).find('input[type=radio]').attr('name','destination'+counter);
    counter++;
})

<强> jsFiddle example

更新:我刚刚注意到您的所有选择元素都重复名称和 ID 属性。要解决此问题,您可以将代码更改为:

var counter = 0;
$('table').each(function () {
    $(this).find('input[type=radio]').attr('name', 'destination' + counter);
    $(this).find('select').eq(0).attr({
        'name': 'State' + counter,
            'id': 'state-selector' + counter
    });
    $(this).find('select').eq(1).attr({
        'name': 'Country' + counter,
            'id': 'country-selector' + counter
    });
    counter++;
})

<强> jsFiddle example

关于javascript - 如何为每个 radio 输入组分配不同的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28073270/

相关文章:

javascript - 将 id 传递给更新 mysql 查询

javascript - 如何通过 ng-click 在 angularjs 中使用键、值对显示表中更多或更少的行

javascript - 使用 Windows 身份验证以编程方式登录 Web 应用程序

javascript - 在 GeoJson 数据接收到的 Google map 多边形上放置标签

javascript - 将游标设置为具有 is-inactive 类的元素的默认值

javascript - 使用 javascript 打开 CSS 模态对话框

javascript - 如何使用 javascript 从对象数组中检索选择性属性并存储为对象?

javascript - 单击按钮时验证表单

javascript - $(document) 和 $ ('parentSelector' ) 的区别用于添加动态添加元素的事件?

javascript - 如何根据 form-validator jquery 插件中的条件更改 errorMess 值