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