如何恢复单选按钮检查更改?

时间:2015-05-06 05:38:11

标签: javascript jquery asp.net-mvc

我为表格中的每个单选按钮放置了 <script src="../jquery.min.js"></script> <button id='one'>Click Me</button> <script> $("#one").click(function(){ console.log("The paragraph was clicked."); }); </script>

.change()

我正在尝试做的是在某些情况下恢复无线电波形改变。

默认情况下,我的radiobutten标记为false(默认情况下是“否”,“否”)。如果我点击“是”,但没有达到条件,我需要保持在“否”。

我试图用这种方式做到这一点:

    for (var i = 0; i < Count; i++) {
        $('input[name="Options[' + i + '].Completed"]').change(function () {
            var number = $(this).attr("name").match(/\d+/g)[0];
            ...
            some action
            ...
        });
    }

但这似乎不起作用(没有任何反应,但条件正常)。

我做错了什么,我怎样才能实现目标?

修改

radiobutton html:

if (... condition ...) {
     $('input[name="Options[' + i + '].Completed"]').filter('[value=False]').prop('checked', true);
}

2 个答案:

答案 0 :(得分:0)

i内部for循环是所有单选按钮实例之间的共享。您需要为每个单选按钮复制它,如下所示:

for (var i = 0; i < Count; i++) {
    (function (i) {
        $('input[name="Options[' + i + '].Completed"]').change(function () {
            var number = $(this).attr("name").match(/\d+/g)[0];

            if (...condition...) {
                $('input[name="Options[' + i + '].Completed"]').filter('[value=False]').prop('checked', true);
            }
        });
    })(i);
}

此外,无需单独在for循环中的单选按钮上附加事件。

您可以在jQuery中使用事件委派。

$(document / parentSelector).on('change', 'input[name="Options[' + i + '].Completed"]', function () {
    // Event handling code here    
});

答案 1 :(得分:0)

coll.find($everything, projection)

http://jsfiddle.net/aL86u746/