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