2013-10-18 74 views
0

假定以下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'); 
}); 
+0

創建單選按鈕與無的顯示(刪除dom),然後使用jquery查看是否('cq_testRdio')被選中,然後更改單選按鈕的css以顯示(您可以使用slidetoggle進行動畫) – user934902

+0

您錯過了一個''>' –

+0

@ RokoC.Buljan :很好的眼睛,但它實際上存在於代碼中。意外丟失在複製/粘貼中,所以不是問題。 – Prefix

回答

1

試試這個:

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

是多年平均值有無道具,attr(用來做道具的工作也一樣)使用取布爾值禁用老版本的JQ。

Demo

此外,我不得不修復您的標記了很多,以及(現在我看到它固定在已有的問題)

+0

作品完美。將在幾分鐘內接受最佳答案。如果我可能問,標記有什麼問題? – Prefix

+0

@Prefix沒有你的初始標記,只是現在看到你更新了你的問題修復標記.. :) – PSL

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

jsFiddle example

+0

好的答案,不幸的是沒有像要求的jQuery 1.5兼容。 – Prefix

+0

也可以修改頁面上的所有文本輸入。我只想更改原始帖子中提供的2。 – Prefix

+0

更新爲1.5兼容。 – j08691

0

你的代碼是有點亂,所以我重建它:http://jsfiddle.net/QgJac/1/

我想隱藏整個div是更好。如果他們選擇「否」,他們並不需要看到這些問題。

+0

隱藏整個div在這種情況下是不可取的。固體代碼,歡呼。 – Prefix

相關問題