Javascript 使用jQuery选择正确的单选按钮

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

我有4个单选按钮和一个数据表,其中有一行匹配每个单选按钮的值。当我选择一个数据表行时,相应的单选按钮被选中。我可以循环浏览所有数据表行,并观察每个相应的单选按钮被选中。如果我选择的数据表行与以前选择的行具有相同的单选按钮值,或者返回并重新选择一行,则单选按钮将停止被选择。有人能告诉/告诉我为什么我的单选按钮没有被第二次选中吗

<-- 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插件的链接。