存储不确定的复选框状态

时间:2018-03-19 13:48:54

标签: javascript php html database wiki

我已经有一些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>

2 个答案:

答案 0 :(得分:0)

您可以使用jquery .filter函数

您的复选框应该是这样的类

<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); 
})

答案 1 :(得分:0)

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