2010-01-08 78 views
2

我有一個包含多行的表。每行包含5列(或5個TD)。第一個TD的內部是一個文本框和一個選擇框。其他4個TD每個包含一個包含一組單選按鈕的表格。如果選擇第一個TD,則禁用一行中的所有其他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並刪除disabled屬性(以啓用它),但我無法圍繞如何創建條件陳述或是否需要使用Parents()或Siblings()或其他東西來遍歷。

快速澄清: 我的表有多個行和多個列(我只展示了TD的2,以節省空間,但對方3次達陣看起來就像是第二個)。例如,player1和p1name1將在第二行是player2和p2name2。所以,如果文本/選擇在第一行更改,它不應該啓用所有行中的所有單選按鈕 - 只有單選按鈕的第一行。

任何幫助表示讚賞!

回答

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」,只有這些會受到影響。

增加:

如果they''re頁面上的唯一選擇和文字輸入,你也可以放棄添加類別和使用類型選擇,而不是:

$('select, input:text').change(function(){ 
    $(this).parents('tr').find('input:radio').attr('disabled', false); 
}); 
+0

如果有多於一行的選擇/文本+單選按鈕會怎麼樣? – Lazarus 2010-01-08 08:45:38

+0

這看起來好像可以工作,但是,我們怎樣才能推廣這一點。我的表格有多行和多列。例如,player1和p1name1將在第二行是player2和p2name2。所以,如果文本/選擇在第一行更改,它不應該啓用所有行中的所有單選按鈕 - 只有第一行。我會用這個信息更新OP(原始文章)。 – tresstylez 2010-01-08 08:55:47

+0

答案的後半部分應該起作用。一旦你給選擇/輸入一個普通的類,你將DOM上移到他們的父'tr',然後你在那行中找到單選按鈕並啓用它們。 – munch 2010-01-08 09:03:03

0

你可以在你可以使用javascript隱藏的TD中放置一個div。搜索谷歌將幫助你如何隱藏divs :)。祝你好運!

+0

我不想要隱藏任何東西,只需禁用表單元素。 – tresstylez 2010-01-08 08:52:48

相關問題