0

这是一个小提琴示例: 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,单选按钮的 id 为 rad

4

2 回答 2

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

于 2012-07-19T20:22:51.293 回答
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/

于 2012-07-19T20:43:18.627 回答