如何根据单选按钮选择切换表中的多个输入

时间:2013-10-18 18:38:14

标签: javascript jquery html jquery-selectors

假设以下html:

<tr>
    <td>
        <label for="c1_testRdio">Have you taken any tests in this class?:</label>
        <br>
        <label>Yes<input type="radio" class="testRdio" name="c1_testRdio" value="Yes"></label>
        <label>No <input type="radio" class="testRdio" name="c1_testRdio" value="No" checked></label>
        <label>How Many? <input type="text" class="howManyTests" name="c1_howManyTests" disabled></label>
    </td>
    <td>
        <label for="c1_whatGradesTests">What were your grades?:</label><br>
        <input type="text" name="c1_whatGradesTests" disabled>
    </td>
</tr>

如果选择了value="Yes"的广播,那么jQuery(1.5兼容)代码将启用2个文字输入,c1_howManyTestsc1_whatGradesTests

尝试过:

$('.testRdio').change(function(){
    //var txt = $(this).closest("td").next("td").children('.howManyTests');
    var txt = $(this).parent().next('label>input[type="text"]');
    console.log(txt.id);
    this.value == 'No' ? txt.removeAttr('disabled') : txt.attr('disabled', 'disabled');
});

3 个答案:

答案 0 :(得分:1)

试试这个:

$('.testRdio').change(function () {
    $(this).closest('tr').find('input[type="text"]').attr('disabled', this.value === 'No');
});

旧的jq版本没有prop,attr(以前也用于做prop的工作)过去常常将bool值用于禁用。

<强> Demo

此外,我还必须修复你的标记(现在我已经在问题中看到它已修复)

答案 1 :(得分:0)

$('.testRdio').change(function(){
   $(this).closest('tr').find('input[type="text"]').attr('disabled',$(this).val()=="No");
});

<强> jsFiddle example

答案 2 :(得分:0)

你的代码有点混乱,所以我重建了它:http://jsfiddle.net/QgJac/1/

我认为隐藏整个div会更好。如果他们选择“否”,他们实际上不需要看到这些问题。