我有一个包含多行的表。每行包含5列(或5个TD)。第一个TD的内部是文本字段和选择框。其他4个TD都包含一个包含一组单选按钮的表。
<tr bgcolor=#ffffff>
<td valign=center>
<select name=player1>
<option>0</option>
<option>1</option>
</select>
<input type="text" id="PlayerLocal1" name=p1name size=20>
</td>
<td>
<table border=1>
<tr>
<td>
<table border=0 cellspacing=0 cellpadding=0>
<tr>
<td><input type=radio name=p1o1 value="1B">1B
<td><input type=radio name=p1o1 value="FO">FO
</tr>
</table>
</td>
</tr>
</table></td></tr>
基本上我希望禁用其他4个TD中的每一个中的单选按钮,除非用户在文本字段中输入值或在选择字段中选择一个值。
我正在考虑为每个TR添加一个类,然后以某种方式遍历每个不是第一个TD的TD并删除禁用的属性(启用它),但我无法理解如何创建条件声明或我是否需要使用Parents()或兄弟姐妹()或其他东西来遍历。
快速澄清: 我的表有多行和多列(我只显示了两个TD以节省空间,但其他3个TD看起来就像第二个)。例如,player1和p1name1将是第二行中的player2和p2name2。因此,如果在第一行中更改了text / select,则不应启用所有行中的所有单选按钮 - 只有单选按钮才能显示第一行。
感谢任何帮助!
答案 0 :(得分:3)
$('input:radio').attr('disabled', true);
$('select[name=player1], input[name=p1name]').change(function(){
$('input:radio').attr('disabled', false);
});
我建议在属性周围添加引号,例如name="p1name"
而不是name=p1name
。当你不这样做时,会发生疯狂的事情。
此外,当您提供元素id或类时,您可以更精确地选择哪些元素,哪些元素不是。比方说,例如,你只想要禁用其中一个单选按钮,你可以轻松地做到这一点,而没有id,它会更加困难。
根据要求:
给选择和输入一个类,比如
<select class="affector"></select>
<input type="text" class="affector" />
你可以这样穿过:
$('.affector').change(function(){
$(this).parents('tr').find('input:radio').attr('disabled', false);
});
如果你在<tr>
中的某个地方有更多的单选按钮,而你只想启用一个选择组,那么让课程更有益。您可以将类选择器替换为.find()
中的“input:radio”,只有那些会受到影响。
<强>增加:强>
如果它们是页面上唯一的选择和文本输入,您也可以放弃添加类并使用类型选择器:
$('select, input:text').change(function(){
$(this).parents('tr').find('input:radio').attr('disabled', false);
});
答案 1 :(得分:0)
你可以在那些可以使用javascript隐藏的TD周围加一个div。在谷歌搜索将帮助您如何隐藏divs :)。祝你好运!