2014-04-22 18 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; 
} 
相关问题