如何为每个无线电输入组分配不同的名称
How to assign a different name for each radio input group
我正在寻找一种动态更改一组输入单选按钮名称的解决方案。
我正在创建一个旅行行程,用户在其中选择"国内"或"国际"。该选择将在下面隐藏/显示相应的州/国家/地区下拉列表。可能有多个目的地,因此,我需要多个州/国家/地区选择器。我遇到的问题是所有输入都具有相同的名称,因此在任何给定时间只有一个按钮将显示为"选中"。
代码片段将通过 .ssi 输入,所以我不能只对输入名称进行硬编码。我需要一个JavaScript/jQuery方法,随着更多目的地的添加而动态更改它。默认值为"目标"。我希望每个单选按钮组都是"目的地 1"、"目的地 2"等。
这是一个非常淡化的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>
这是我的小提琴:http://jsfiddle.net/Currell/9sr5rkjy/2/
我有点JavaScript 初学者,所以如果我的流程、术语或代码有点偏差,请原谅我。
您可以通过添加以下内容来重命名它们:
var counter = 0;
$('table').each(function(){
$(this).find('input[type=radio]').attr('name','destination'+counter);
counter++;
})
js小提琴示例
更新:我刚刚注意到您选择的所有元素都重复了名称和 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++;
})
js小提琴示例
分组更改它们(当前分组在TD中):
$("td:has(':radio')").each(function(index){
var $radio = $(this).find(':radio');
$radio.attr("name", $radio.attr('name') + index);
});
JSFiddle: http://jsfiddle.net/TrueBlueAussie/9sr5rkjy/5/
这会将每个集合重命名为 name="destination0"
、 name="destination1"
等。
您也有重复的 ID 字段,这是无效的 HTML,因此您需要对这些字段应用类似的修复程序。 jQuery和Javascript只能找到ID的第一次出现,因为浏览器使用快速查找字典(每个ID值只存储一个元素)。
- 为什么当CRLF被分配到<输入>使用php
- 如何通过javascript为输入类型日期分配默认值
- 通过参数将传递的函数分配给动态创建的输入类型的onclick事件
- 从Javascript中的循环提示输入中分配多个变量
- 在切换情况下未分配输入
- javascript的新手,如何为提交按钮分配输入值
- 如何为每个无线电输入组分配不同的名称
- 将用户输入分配给索引中带有变量的对象
- jsp-如何将输入值分配给我想稍后使用的另一个变量
- Javascript:为在MS Edge中不起作用的其他框架中的输入框分配值
- 将多个图像(文件)从一个文件输入分配给另一个文件输入 - 上传
- 如何将 javascript 变量分配给隐藏的输入
- 使用eval使用字符串输入按名称将函数分配给变量有什么风险
- 仅当输入字段中有内容时才使用 javascript 分配类
- JavaScript.为字母分配数字值,并根据用户的字母输入执行计算
- 如何根据条件在输入上分配 ng 模型中的变量
- 如何使用拼接方法将输入的单词与提示分开并将它们分配给变量
- JavaScript - 如何将用户输入值分配给脚本中的变量
- 找到一个特定的td,并使用jquery将该值分配给文本输入
- 如何将输入值分配给跨度Id