存储不确定的复选框状态

storing indeterminate checkbox state

我有一些 js 可以在选中不确定和未选中之间切换我的复选框。当复选框被选中时,它在我的数据库中存储为 1,当它未被选中时存储为 0,但是当复选框处于不确定状态时我无法弄清楚如何存储一个值,它只是将它设置为 0。我试过一个 onclick功能 我试过 getElementById 我试过 setAttribute 但似乎没有任何效果。该列在我的数据库中没有默认值任何帮助将不胜感激!

PHP

 $schDone =isset($_POST['schDone']);

JS

  <script>
$("#some-checkbox").prop("indeterminate", true); // prop is jQuery 1.6+
var $check = $("input[type=checkbox]"), el;
$check
.data('checked',0)
.click(function(e) {

    el = $(this);

    switch(el.data('checked')) {

        // unchecked, going checked
        case 0:
            el.data('checked',1);
            el.prop('checked',true);
        document.getElementById("schDone").value = "1";

            break;


        // going indeterminate
        case 1:
            el.data('checked',2);
            el.prop('indeterminate',true);
            el.prop('checked',false);            
            document.getElementById("schDone").value = "3";

            break;

        // indeterminate going unchecked
        default:  
            el.data('checked',0);
            el.prop('indeterminate',false);
            el.prop('checked',false);
           document.getElementById("schDone").value = "0";
    }

});
    </script>

HTML

<td width="100px"bgcolor="#A7D0FE"><strong>Sch Done</strong></td>
<td><input type='checkbox' id="schDone" name='schDone' <?php if($row['schDone']==1){echo 'checked="checked"';}  ?> value="1"></td>

您可以使用 jquery.filter 函数

您的复选框应该 class 像这样

<td><input type='checkbox' name='schDone' <?php if($row['schDone']==1){echo 'checked="checked"';}  ?> value="1" class='schDone'></td>

那么你的jquery代码可以是这样的

$('.schDone').filter(':checked', function() { // do whatever you want here });

如果选中,您最好可以添加一个隐藏字段来设置值

<input type='hidden' class='is-checked' name='is-checked' value=''>

那你可以说

$('.schDone').filter(':checked', function() { 
  $('.is-checked').val(1); 
})

感谢你们提供的所有帮助,我只需要创建一个隐藏字段并根据复选框的状态分配它,然后将其存储到我的数据库中。不必使用过滤器或任何特殊的东西,并添加了一些代码以在从数据库中出来时以正确的状态显示复选框。