2014-04-22 51 views
0

我有一個HTML表格當然包含行和列。每行都有單選按鈕,每行都是一組單選按鈕,這意味着我可以從所有列中只選擇一行中的一個單選按鈕。我想設置一個CSS來選擇表格中的一個單選按鈕單元格,這很好,但當我移動到同一行中的另一個單選按鈕時,作爲單選按鈕組,前一個單選按鈕被取消選中,但CSS仍然存在,因爲在選擇組中的另一個無線電時,不會爲自動取消選中的無線電觸發OnChange事件。如何觸發OnChange事件的單選按鈕,當其未檢查

有沒有辦法在取消選擇收音機時觸發onChange事件?

+0

將這項工作嗎? http://stackoverflow.com/questions/11173685/how-to-detect-radio-button-deselect-event – user776686

+0

不,我檢查了這一點。 –

+0

也許這是一個定義單選按鈕的精確上下文的問題,比如'tr'?如果您發佈了您使用的代碼,它會有所幫助。 – user776686

回答

1

如何:http://jsfiddle.net/2Z8Nt/14/

JS

$(function() { 
    // Create table and radios 
    for (var tri = 0; tri < 3; tri++) { 
     var $tr = $('<tr>').appendTo('table'); 
     var $td = $('<td>').appendTo($tr); 
     for (var rai = 0; rai < 3; rai++) { 
      var $sp = $('<span class="radio-holder">'); 
      var $rd = $('<input type="radio" name="rad-' + tri + '" class="rad" value="val-' + rai + '"/>').appendTo($sp); 
      $sp.append('Radio ' + tri + '' + rai); 
      $td.append($sp); 
      $tr.append($td); 
     } 
    } 

    // Record to keep track of radio selection 
    var selrad = {}; 

    // Handler 
    $('input.rad').on('deselect', function() { 
     $(this).parents('.radio-holder').addClass('just-deselected') 
    }).each(function() { 
     $(this).on('click', function() { 
      var nm = $(this).attr('name'); 
      $('input[name="' + nm + '"').parents('.radio-holder').removeClass('just-deselected'); 

      if (selrad[nm]) { 
       selrad[nm].trigger('deselect'); 
      } 

      selrad[nm] = $(this); 
     }) 
    }); 
}) 

CSS

.radio-holder { 
    border: 1px solid silver; 
    margin: 3px; 
    padding: 3px; 
} 
.radio-holder.just-deselected { 
    border: 1px solid red; 
} 
相關問題