所以我有这行代码会在表单中重复不同的时间。
<input type="checkbox" name="checkbox[]" /> !checked
<input type="checkbox" name="checkbox[]" /> !unchecked
<input type="checkbox" name="checkbox[]" /> !checked
<input type="checkbox" name="checkbox[]" /> !unchecked
!勾选显示复选框已选中且未选中!表示未选中该复选框。
我如何创建一个php数组来按顺序获取已选中和未选中复选框的值:
array( 0 => checked, 1 => unchecked, 2 => checked, 3 => unchecked );
我暂时可以使用$ _POST [“复选框”]获得已检查的值,但我无法获得未经检查的值。
答案 0 :(得分:1)
首先,您需要为复选框添加一个值:
<input type="checkbox" name="checkbox[]" value="checkboxNchecked" /> !checked
否则你无法真正区分你的复选框。
然后:如果选中它们,您的复选框将返回一个值,或者在取消选中时将忽略它们。您不会获得NULL
,FALSE
或其他值。它不会通过POST / GET转移到您的PHP脚本,就好像它不是您的HTML代码。这包括以下主题:Does <input type="checkbox" /> only post data if it's checked?
如果你知道有多少复选框和它们被称为什么 - 没有问题 - 但如果你没有,你需要找到解决方法。如果您告诉我们您的复选框的性质,我们可以帮助您找到量身定制的解决方案。
答案 1 :(得分:0)
这将仅打印选中的字段,因为未选中的字段不会发送到服务器。
你将不得不做一些javascript和隐藏的字段技巧
看看这里
Post the checkboxes that are unchecked
<input type="checkbox" name="checkbox[n1]" /> !checked
<input type="checkbox" name="checkbox[n2]" /> !unchecked
<input type="checkbox" name="checkbox[n3]" /> !checked
<input type="checkbox" name="checkbox[n4]" /> !sdsk
foreach($_POST['checkbox'] as $key => $value){
$checkbox[$key] = 'checked';
}
print_r($checkbox); // your new array
答案 2 :(得分:0)
你可以使用jquery和ajax。在您的提交事件中,从表单中获取所有值并通过ajax提交。你可以像这样在jquery中得到未经检查的值:
$("input:checkbox:not(:checked)")
或
if ($('#idOfYourCheckBox:checked').length > 0) {
//its checked
}
else {
//not checked
}
答案 3 :(得分:0)
解决:
表格声明......
<form id="form1" name="form1" method="post" action="xx.php" onSubmit="set_hidden_value()">
<input name="arrayofchecks" type="hidden" value="toset" />
...
的OnSubmit:
function set_hidden_value()
{
var checkstring = "";
for (var i=0; i < $('#checkbox').length; i++)
{
if ($('#checkbox')[i].checked)
{
checkstring = checkstring + "1";
}
else
{
checkstring = checkstring + "0";
}
}
$('#arrayofchecks').val(checkstring);
结果是一个字符串,其值已选中且未选中(1和0)...
在我的情况下,我使用ajax拦截提交并在这里做set_hidden_value ......
答案 4 :(得分:0)
如果您使用的是像PHP这样的服务器端语言,那么使用隐藏字段提供默认或编写javascript的方法比较简单(如果用户的设备/浏览器不支持该方法,则两者都可能失败)。
<input type="checkbox" value="choice1" name="checkbox[]" />
<input type="checkbox" value="choice2" name="checkbox[]" />
<input type="checkbox" value="choice3" name="checkbox[]" />
此方法不会返回未选中的项目,但会明确标识已检查的项目。否则,如果复选框都具有相同的值,则只需重复一个,两个或三个值,不知道检查了哪个项目。但是,假设使用上述方法检查了choice2,那么很容易弄清楚项目1和3因此未被检查。
答案 5 :(得分:0)
请检查以下代码。
$("button").click(function () {
var i=0;
var cbox=[];
$("input[name='cbox']").each(function () {
if($(this).is(':checked')) {
cbox[i++] = $(this).val();
}else{
cbox[i++] = "unchecked";
}
});
console.log(cbox);
i = 0;
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" value="checked" name="cbox">
<input type="checkbox" value="checked" name="cbox">
<input type="checkbox" value="checked" name="cbox">
<input type="checkbox" value="checked" name="cbox">
<button>Click</button>