【问题标题】:Checking the checkbox even I set it into disabled检查复选框,即使我将其设置为禁用
【发布时间】:2013-12-05 11:01:24
【问题描述】:

为什么即使我将复选框设置为禁用它总是在我单击检查所有脚本时检查所有。

这是我的脚本

禁用由 php 代码设置的复选框

 while ($row = $result1->fetch_assoc()) {
<td><input name="checkbox[]" type="checkbox" id="checkbox[]" value="' . $row['id'] . '"'.($row['pr'] == ""?"disabled ":"").' class="checkbox"></td>
}

这是我检查所有的脚本

function setCheckboxes3(act) {
  var e = document.getElementsByClassName('checkbox');
  var elts_cnt  = (typeof(e.length) != 'undefined') ? e.length : 0;
  if (!elts_cnt) {
    return;
  }
  for (var i = 0; i < elts_cnt; i++) {
    e[i].checked = (act == 1 || act == 0) ? act : (e[i].checked ? 0 : 1);
  }
}

链接

a href="javascript:setCheckboxes3(1);" class="chkmenu">Check All</a> | <a href="javascript:setCheckboxes3(0);" class="chkmenu">Uncheck All</a>

【问题讨论】:

  • document.getElementsByClassName 返回一个 NodeList,因此 typeof e.length 永远不会是 undefined
  • 当您似乎没有使用 jQuery 时,为什么还要包含 jQuery 标记?

标签: javascript php jquery checkbox


【解决方案1】:

如果它没有被禁用,你可以检查它,例如:

e[i].checked = (act == 1 || act == 0)? act : e[i].checked  && !e[i].disabled ? false : true;

checked 属性是布尔值,所以应该设置为truefalse

【讨论】:

    【解决方案2】:

    我知道这很乱,但应该可以完成工作:

    for (var i = 0; i < elts_cnt; i++) {
        if(!e[i].disabled){
        e[i].checked = (act == 1 || act == 0) ? act : (e[i].checked ? 0 : 1);
        }else{
        e[i].checked = false;
        }
      }
    

    【讨论】:

      【解决方案3】:

      更新链接以传递true|false

      <a href="javascript:setCheckboxes3(true);" class="chkmenu">Check All</a> | <a href="javascript:setCheckboxes3(false);" class="chkmenu">Uncheck All</a>
      

      然后

      function setCheckboxes3(act) {
          $('.checkbox').not(':disabled').prop('checked', act)
          //or $('.checkbox:not(:disabled)').prop('checked', act)
      }
      

      与您当前的链接

      function setCheckboxes3(act) {
          $('.checkbox').not(':disabled').prop('checked', act == 1 ? true : false);
          //or $('.checkbox:not(:disabled)').prop('checked', act == 1 ? true : false)
      }
      

      【讨论】:

      • 所以我要修改我的脚本?
      • 它有效 :) ,我只是在我之前的问题中添加了一些链接。请看一下
      • 你可以做x.prop('checked', act==1)或者更疯狂的事情,比如!~-act
      猜你喜欢
      • 1970-01-01
      • 2015-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-17
      • 2019-02-22
      • 1970-01-01
      相关资源
      最近更新 更多