2010-04-30 73 views
1

我正在嘗試完成類似於Wikipedia's History歷史記錄頁面的操作,動態禁用一系列單選按鈕。使用jquery按需禁用一系列單選按鈕

IE瀏覽器...如果選擇了#4兩組,然後一組1-4殘疾人等

我知道如何單獨或作爲一組禁用它們,但我不知道如何做了一系列的說1-4:

各異:

$("#version_history input[id^=versions_2_3]:radio").attr('disabled',true); 

或組:

$("#version_history input[id^=versions_2]:radio").attr('disabled',true); 

輸入被命名爲versions_1_X和versions_2_X,X是某個數字。 1..2..3 ..等

我的最終目標是提供點擊單選按鈕的功能......然後禁用數字或以下對象組的所有廣播框。

+0

我更新了我的答案 – 2010-04-30 21:39:09

回答

2

給出下面的HTML:

<div id="version_history"> 
    <div class="version_history_item"> 
     <input type="radio" name="original"> 
     <input type="radio" name="update"> 
     <span>description</span> 
    </div> 
    ... 
</div> 

一個可行的方法是:

function updateVersionRadioButtonAvailability() { 

    var versionHistoryElement = $('#version_history'), 
     originalIndex = $('input[name=original]:checked', versionHistoryElement).parent('.version_history_item').index(), 
     updateIndex = $('input[name=update]:checked', versionHistoryElement).parent('.version_history_item').index(), 
     visibleStyle = { visibility: 'visible' }, 
     hiddenStyle = { visibility: 'hidden' }; 

    $('.version_history_item', versionHistoryElement).each(function(index) { 
     $('input[name=original]', $(this)).css(index > updateIndex ? visibleStyle : hiddenStyle); 
     $('input[name=update]', $(this)).css(index < originalIndex ? visibleStyle : hiddenStyle); 
    }); 

} 

$(document).ready(function() { 
    $('#version_history input[name=original], #version_history input[name=update]').live('click', updateVersionRadioButtonAvailability); 
    updateVersionRadioButtonAvailability(); 
}); 

幹編碼,這樣你的里程可能會有所不同。

+1

+1:我看到問題現在問什麼(*掛頭*),但是當我嘗試了你的代碼時,我發現了索引的一些問題。對於每個索引,'versionHistoryElement'需要不同:對於原始版本,它需要'[input = original]'並且與更新相同。因此不能在下面的'.each()'函數中使用。 – Mottie 2010-04-30 12:57:32

+0

已測試並修復 – 2010-04-30 21:35:33

+0

fudgey:我不理解你說的versionHistoryElement對於每個索引需要不同。代碼中唯一的錯誤是賦值'originalIndex'和'updateIndex'。他們都錯過了對「父」功能的調用。 – 2010-04-30 21:38:01

1

我不太清楚,如果我明白你想要完成什麼,所以我做了this demo。基本上它會禁用選定組的版本號較低的所有廣播組。

我不知道是否要禁用所有這些功能,因爲無法再次單擊它們,因此我還添加了重置按鈕。

也許如果你澄清一點,你究竟想要什麼?

+0

那麼,這就是...如果你看看http://en.wikipedia.org/w/index.php?title=Paranoid_Android&action=history,你會看到我正在嘗試做。 – holden 2010-04-30 09:27:14

+0

是的,現在我已經看到了Ken的代碼,我看到了你想要的東西。我不得不調整一些東西來讓他的代碼工作......我會在他的帖子中發表評論。 – Mottie 2010-04-30 12:54:08