Javascript 禁用多个单选按钮?

Javascript 禁用多个单选按钮?,javascript,jquery,asp.net,radio-button,Javascript,Jquery,Asp.net,Radio Button,我有一个问题表单,有多个是/否单选按钮,每个按钮都有自己的文本区域,只有在为特定问题选择“否”时才应启用该区域。问题是我使用的设置只适用于一个问题,因为匹配的类。 我还没能想出一个好办法让每一对单选按钮都独一无二,只影响它自己的文本区域 我正在使用计数器变量为每个组生成不同的类名,但是脚本只影响.class1。我需要修改脚本,并希望得到一些建议 这是我使用的视图的一部分 @for (int i = 0; i < Model.Questions.Count; i++) {

我有一个问题表单,有多个是/否单选按钮,每个按钮都有自己的文本区域,只有在为特定问题选择“否”时才应启用该区域。问题是我使用的设置只适用于一个问题,因为匹配的类。 我还没能想出一个好办法让每一对单选按钮都独一无二,只影响它自己的文本区域

我正在使用计数器变量为每个组生成不同的类名,但是脚本只影响.class1。我需要修改脚本,并希望得到一些建议

这是我使用的视图的一部分

@for (int i = 0; i < Model.Questions.Count; i++)
        {
           <tr>
                <td>
                    <div>
                        @Html.RadioButtonFor(p => Model.Questions[i].AnswerSelected, true, new { @class = "class" + i, value = "yes" }) Yes
                        @Html.RadioButtonFor(p => Model.Questions[i].AnswerSelected, false, new { @class = "class" + i, value = "no" }) No
                    </div>
                </td>          
            <td>
                @Html.TextAreaFor(p => Model.Questions[i].ActionToTake, new { id = "text1" })
            </td>
        </tr>
    }
有没有一个好的方法来解决这个问题?如果你需要更多的细节,请告诉我

我以前问过这个问题,但我觉得这个问题不够清楚


在你的情况下,你可以这样做

$(':radio').change(function () {
    $(this).closest('tr').find('[class^="text"]').prop('readonly', $(this).val() === 'False');
});

但是,如果您向您的无线电输入、文本区域和它们的公共包装器父级添加一些公共类,则会更好。因此,您将能够使用基于该类而非标记名的选择器。

这是为了.class1 sorry只是一个小主意,我认为更好的方法可能是为每个单选按钮(如.radiogroup)提供一个公共类,并将文本区域与单选按钮放在同一个div中。通过这种方式,您可以侦听每个.radiogroup更改事件并获取div中的第一个textarea。只是一个示例片段:获取HTML并将相同的类赋予所有单选按钮,然后解析同一div中的textarea。要触发更改,您可以轻松地在当前textarea状态和1之间执行按位异或,如果为true,则返回false,如果为false,则返回true。对于背景,应用同样的规则。是的,这更有意义,我想我需要使用其他的布局,而不是你仍然可以使用一个表,只需将textarea放在div中,你就完成了;好的,我试试看。
$(document).ready(function() {
$(".class1").change(function (e) {
    if ($(this).val() === 'True') {
        $("#text1").prop('readonly', true);
        $("#text1").css('background-color', '#EBEBE4');
    } else if ($(this).val() === 'False') {
        $("#text1").prop('readonly', false);
        $("#text1").css('background-color', '#FFFFFF');
    }
});
})
$(':radio').change(function () {
    $(this).closest('tr').find('[class^="text"]').prop('readonly', $(this).val() === 'False');
});