如何在tr中只选择一个输入?

时间:2012-07-19 20:19:04

标签: jquery

这是一个小提琴示例:http://jsfiddle.net/YxU2H/9/ 我试图在行中选择一个复选框或一个单选按钮。我尝试过的东西不起作用:

function selectedBox() {
      var bothChecked = false;
      var row = $(this).closest('tr');

      var isCboxChecked = $('row', '#cbox').is(':checked');
      var isRadChecked = $('row', '#rad').is(':checked');

      //var isCboxChecked = $('#cbox').is(':checked'); //true or false
      //var isRadChecked = $('#rad').is(':checked');

      if (first == second) {
          bothChecked = true;
          //keep checkbox selected but deselect radio button
      }
      if (bothChecked == true) {
          $('#cbox').attr('checked', false);
      }
      else {
          $('#cbox').attr('checked', true);
      }
  } //);

然后我添加了一个onclick =" selectedBox();"到复选框和按钮。复选框的ID为cbox,单选按钮为rad

2 个答案:

答案 0 :(得分:1)

而不是$('#cbox').attr('checked', false);尝试

  if (bothChecked == true) {
      $('#cbox').removeAttr('checked');
  }
  else {
      $('#cbox').attr('checked', 'checked');
  }

修改

完整的解决方案就像这样

$("input:checkbox, input:radio").click(function(e) {

    var row = $(this).closest('tr');

    var chkBox = $(row).find(":checkbox");
    var rdBtn = $(row).find(":radio");

    if ($(chkBox).is(":checked") & $(rdBtn).is(":checked")) { 
      $(chkBox).removeAttr('checked');
    }
});

我把它放在jsfiddle

答案 1 :(得分:1)

您可以将这两个功能放在document.ready

$('input[type="radio"]').click(function() {
    if ($(this).attr('checked') == 'checked') {
        var chk = $(this).closest('tr').find('input[type="checkbox"]:checked');
        if (chk.length > 0) {
            $(chk).removeAttr('checked');
        }
    }
});

$('input[type="checkbox"]').click(function() {
    if ($(this).attr('checked') == 'checked') {
        var rad= $(this).closest('tr').find('input[type="radio"]:checked');
        if (rad.length > 0) {
            $(rad).removeAttr('checked');
        }
    }
});

两者都互相监控,因此您将获得您的功能。尝试一下,为我工作。我已经更新了你的小提琴。这是http://jsfiddle.net/YxU2H/20/