jquery - 如何在重复表单组中使用单选按钮
问题描述
我在 SAME FORM 中使用了一个重复的表单域。我将输入表单字段命名为数组,例如first_name[]
, gender[]
。
在这种情况下,当单击单选按钮时,它会影响其他重复表单组的单选按钮。
$('#repeatButton ').on('click', function() {
var repeater = $('#repeater .items').clone();
$('#repeater').append(repeater);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="">
<div id="repeater">
<div class="form-group items">
<input type="radio" value="male" name="gender[]"><label>Male</label>
<input type="radio" value="female" name="gender[]"><label>Female</label>
</div>
</div>
<input value="add" id="repeatButton">
</form>
解决方案
复选框按name
属性分组。因此,您需要使每个组中的name
唯一性。#repeater .items
在您的情况下,最简单的方法是将时间戳附加到该值。
请注意,您应该只clone()
使用第一组,而不是全部,并且还使用 abutton
来触发添加新元素。我将收音机包装在label
元素中,以允许用户也单击关联的文本。尝试这个:
$('#repeatButton ').on('click', function() {
var $repeater = $('#repeater .items:first').clone();
var ts = (new Date()).getTime();
$repeater.find('input').attr('name', function(i, name) {
return ts + '_' + name;
});
$repeater.appendTo('#repeater');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="">
<div id="repeater">
<div class="form-group items">
<label>
<input type="radio" value="male" name="gender[]" />
Male
</label>
<label>
<input type="radio" value="female" name="gender[]" />
Female
</label>
</div>
</div>
<button type="button" id="repeatButton">Add</button>
</form>
推荐阅读
- javascript - 如何从 google-cloud-firestore 获取数据到全局变量?
- java - 软件导致连接中止:KerberosRestTemplate (spring-security-kerberos-client) 的套接字写入错误
- kubernetes - 如何在 kubernetes 集群上运行 yum update?
- c# - 如何使用 Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 连接到外部服务器
- node.js - 为什么在节点中,child_process `spawn` 没有 killSignal 选项但 `spawnSync` 有?
- c# - 如何使用 Nlog + Asp.net Core 2.1 + SendGrid 发送错误邮件?
- windows - 批处理文件未运行,命令从 CMD 运行。知识产权变更
- django - 如何在 django 中存储变量历史记录?
- erp - Infor LN (Baan) - Hello World 编程
- apache-karaf - Opendaylight 可扩展性