Javascript 使用jQuery选择正确的单选按钮
我有4个单选按钮和一个数据表,其中有一行匹配每个单选按钮的值。当我选择一个数据表行时,相应的单选按钮被选中。我可以循环浏览所有数据表行,并观察每个相应的单选按钮被选中。如果我选择的数据表行与以前选择的行具有相同的单选按钮值,或者返回并重新选择一行,则单选按钮将停止被选择。有人能告诉/告诉我为什么我的单选按钮没有被第二次选中吗Javascript 使用jQuery选择正确的单选按钮,javascript,html,jquery,Javascript,Html,Jquery,我有4个单选按钮和一个数据表,其中有一行匹配每个单选按钮的值。当我选择一个数据表行时,相应的单选按钮被选中。我可以循环浏览所有数据表行,并观察每个相应的单选按钮被选中。如果我选择的数据表行与以前选择的行具有相同的单选按钮值,或者返回并重新选择一行,则单选按钮将停止被选择。有人能告诉/告诉我为什么我的单选按钮没有被第二次选中吗 <-- data table populated with 5 rows of data. Two rows have 3 for the radio button
<-- data table populated with 5 rows of data. Two rows have 3 for the radio button value -->
<table id="reviewerDatatable" class="display compact">
<thead>
<tr>
<th>Review Date</th>
<th>Reminder Sent</th>
<th>Review Interval</th> <-- column with radio button values (3,6,12,24) -->
<th>Is Active</th>
<th>Actionee</th>
<th>Artifact</th>
</tr>
</thead>
</table>
<-- Section of form with radio buttons -->
<div class="row">
<label class="col-form-label col-sm-3">Reminder Intervals</label>
<div class="col-sm-9">
<div class="form-check">
<input class="form-check-input" type="radio" name="reminderInterval" value="3">
<label class="form-check-label" for="reminderInterval1">
3 Months
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="reminderInterval" value="6">
<label class="form-check-label" for="reminderInterval2">
6 Months
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="reminderInterval" value="12">
<label class="form-check-label" for="reminderInterval3">
12 Months
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="reminderInterval" value="24">
<label class="form-check-label" for="reminderInterval4">
24 Months
</label>
</div>
</div>
</div>
<-- Click event for data table -->
$('#reviewerDatatable tbody').on('click', 'tr', function () {
var rowData = table.row(this).data();
$.each(rowData, function (name, val) {
var $el = $('[name="' + name + '"]'),
type = $el.attr('type');
switch (type) {
case 'checkbox':
$el.prop('checked', val);
break;
<-- This works and selects the corresponding radio button on the 1st time through -->
case 'radio':
$el.filter('[value=' + val + ']').attr('checked', true);
break;
case 'date':
var now = new Date(val);
var day = ("0" + now.getDate()).slice(-2);
var month = ("0" + (now.getMonth() + 1)).slice(-2);
var formattedDate = now.getFullYear() + "-" + (month) + "-" + (day);
$el.val(formattedDate);
break;
default:
$el.val(val);
}
});
});
<!-- Data used to generate the rows -->
<!--https://datatables.net/examples/styling/compact.html-->
<script src="../../lib/plugins/jquery.datatables.min.js" type="text/javascript"></script>
{
"ArtifactData": [
{
"reviewerArtifactId": 1,
"lastReviewDate": "06/01/2019",
"dateReminderSent": "06/01/2020",
"reminderInterval": "6",
"artifactIsActive": true,
"actionee": "Superman",
"artifact": "Lois' Diary"
},
{
"reviewerArtifactId": 2,
"lastReviewDate": "07/01/2019",
"dateReminderSent": "07/01/2020",
"reminderInterval": "3",
"artifactIsActive": true,
"actionee": "Batman",
"artifact": "Joker's Criminal Plans"
},
{
"reviewerArtifactId": 3,
"lastReviewDate": "08/01/2019",
"dateReminderSent": "08/01/2020",
"reminderInterval": "24",
"artifactIsActive": false,
"actionee": "Spiderman",
"artifact": "Class Schedule"
},
{
"reviewerArtifactId": 4,
"lastReviewDate": "09/01/2019",
"dateReminderSent": "09/01/2020",
"reminderInterval": "3",
"artifactIsActive": true,
"actionee": "Hulk",
"artifact": "Any artifact he wants"
},
{
"reviewerArtifactId": 5,
"lastReviewDate": "10/01/2019",
"dateReminderSent": "10/01/2020",
"reminderInterval": "12",
"artifactIsActive": true,
"actionee": "Thor",
"artifact": "Mjolnir Specs"
}
]
}
审查日期
已发送提醒
复习间隔
是活跃的
被起诉人
人造物品
提醒间隔
三个月
6个月
12个月
24个月
$('#reviewerDatatable tbody')。在('click','tr',function(){
var rowData=table.row(this.data();
$.each(行数据、函数(名称、val){
变量$el=$('[name=“'+name+'“]'),
type=$el.attr('type');
开关(类型){
案例“复选框”:
$el.道具('checked',val);
打破
“无线电”案例:
$el.filter('[value='+val+']').attr('checked',true);
打破
案例“日期”:
var now=新日期(val);
var day=(“0”+now.getDate()).slice(-2);
var month=(“0”+(now.getMonth()+1)).slice(-2);
var formattedDate=now.getFullYear()+“-”+(月)+“-”+(日);
$el.val(格式日期);
打破
违约:
$el.val(val);
}
});
});
{
“工件数据”:[
{
“reviewerArtifactId”:1,
“最新修订日期”:“2019年1月6日”,
“日期提醒”:“2020年1月6日”,
“提醒间隔”:“6”,
“人工激活”:正确,
“actionee”:“超人”,
“神器”:“露易丝日记”
},
{
“reviewerArtifactId”:2,
“最新修订日期”:“2019年1月7日”,
“日期提醒”:“2020年1月7日”,
“提醒间期”:“3”,
“人工激活”:正确,
“行动对象”:“蝙蝠侠”,
“神器”:“小丑的犯罪计划”
},
{
“reviewerArtifactId”:3,
“最新修订日期”:“2019年1月8日”,
“日期提醒”:“2020年1月8日”,
“提醒间隔”:“24”,
“人工激活”:假,
“行动对象”:“蜘蛛侠”,
“工件”:“课程时间表”
},
{
“reviewerArtifactId”:4,
“最新修订日期”:“2019年1月9日”,
“日期提醒”:“2020年1月9日”,
“提醒间期”:“3”,
“人工激活”:正确,
“被起诉人”:“绿巨人”,
“神器”:“他想要的任何神器”
},
{
“reviewerArtifactId”:5,
“最新修订日期”:“2019年1月10日”,
“日期提醒”:“2020年1月10日”,
“reminderInterval”:“12”,
“人工激活”:正确,
“actionee”:“Thor”,
“工件”:“Mjolnir规格”
}
]
}
控制台中是否显示任何内容?尝试将console.log放入radio case语句中,以确保它具有正确的值。无论我选择行多少次,每次都会在我的控制台中显示正确的值。@是否可以添加tr
数据以及单击的位置?行是使用JSON数据生成的。我已经添加了它和一个到jquery插件的链接,该插件填充了表。您的控制台中有什么显示吗?尝试将console.log放入radio case语句中,以确保它具有正确的值。无论我选择行多少次,每次都会在我的控制台中显示正确的值。@是否可以添加tr
数据以及单击的位置?行是使用JSON数据生成的。我已经添加了它和一个指向填充表的jquery插件的链接。