【问题标题】:toggle between disable and enable with jquery in a bootstrap table在引导表中使用 jquery 在禁用和启用之间切换
【发布时间】:2015-12-14 19:53:53
【问题描述】:

我有一个带有列表的表格,每一行都有一个复选框,当您单击该行时可以打开和关闭,我已经解决了这个问题,但我也希望在选中一个或多个复选框时启用一个按钮,和另一个仅在选中一个复选框时启用的按钮。

我无法让启用/禁用部分工作

这是我的行的 html:

<tr class="ydelse ui-draggable ui-draggable-handle" data-title="test-title">
  <td><input type="checkbox"></td>
  <td>This is a line title example</td>
</tr>

这是 html/bootstrap 中的按钮:

<div class="row">
  <div class="col-lg-2">
    <a href="#" class="btn btn-default ydelse-btn" id="sletydelse" disabled="disabled">SLET</a> 
  </div>
  <div class="col-lg-5">
    <a href="#" class="btn btn-default ydelse-btn" id="redigerydelse" disabled="disabled">REDIGER</a>                                       
  </div>
  <div class="col-lg-5 pull-right">
    <a href="#" class="btn btn-default ydelse-btn pull-right">OPRET NY</a>                                      
  </div>
</div>

这是我的 jquery:

$('table tbody tr').click(function(event) {
  if (event.target.type !== 'checkbox') {
    $(':checkbox', this).trigger('click');
  }

  if ($(':checkbox', this).prop("checked")) {
    valgte++;
  } else {
    valgte--;
  }

  console.log(valgte);

  if (valgte > 0) {
    $('#sletydelse').prop("disabled", false);
    $('#redigerydelse').prop("disabled", false);
    console.log($('#sletydelse').prop("disabled"));
  } else if (valgte > 1) {
    $('#redigerydelse').prop("disabled", true);
  }

  if (valgte == 0) {
    $('#sletydelse').prop("disabled", true);
    $('#redigerydelse').prop("disabled", true);
  }

  console.log(valgte);  
});

谁能指导我正确的方向

【问题讨论】:

  • 你的条件有点奇怪。您是说,如果选中了 1 个复选框,则启用它们。否则,如果选中了 2 个或多个检查,则禁用一个。否则,如果 (?) 选中 0,则禁用其中 2 个。但无论如何,这是一个有效的代码codepen.io/anon/pen/jWbXVj
  • 太好了,谢谢。如果不清楚,我很抱歉,但你解决了它

标签: jquery css html


【解决方案1】:

我认为你应该切换类而不是属性,因为按钮实际上是链接。

这是一种不同的方法

$('table tbody tr').click(function(event) {
    if (event.target.type !== 'checkbox') {
        $(':checkbox', this).trigger('click');
    }
    valgte = $('input[type=checkbox]:checked').length;

    $('#sletydelse, #redigerydelse').addClass("disabled")
    if (valgte > 0) {
        $('#sletydelse').removeClass("disabled");
    }
    if (valgte == 1) {
        $('#redigerydelse').removeClass("disabled");
    }
});

还有一些工作示例http://jsfiddle.net/42jevgpo/

【讨论】:

  • 谢谢,非常有效的解决方案
【解决方案2】:
$('table tbody tr').click(function(event) {
  if (event.target.type !== 'checkbox') {
    $(':checkbox', this).trigger('click');
  }

  if ($(':checkbox', this).prop("checked")) {
    valgte++;
  } else {
    valgte--;
  }
  console.log(valgte);

  if (valgte > 0) {
    $('#sletydelse').css("disabled", false);
    $('#redigerydelse').css("disabled", false);
    console.log($('#sletydelse').prop("disabled"));
  } else if (valgte > 1) {
    $('#redigerydelse').css("disabled", true);
  }

  if (valgte == 0) {
    $('#sletydelse').css("disabled", true);
    $('#redigerydelse').css("disabled", true);
  }
  console.log(valgte);  });

【讨论】:

  • 用 CSS 代替 prop
  • 感谢您的回复,但我选择第一个答案
猜你喜欢
  • 2020-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-19
  • 1970-01-01
  • 1970-01-01
  • 2012-08-26
相关资源
最近更新 更多