所以我有这行代码,将以一种形式重复不同的时间。
!checked
!unchecked
!checked
!unchecked
!checked表示复选框已选中,!unchecked表示复选框未选中。
我如何创建一个php数组来按以下顺序获取选中和未选中复选框的值:
array( 0 => checked, 1 => unchecked, 2 => checked, 3 => unchecked );
暂时我可以使用$ _POST [" checkbox"]来获得检查值,但是我无法获得未经检查的值。
您尝试了什么?遇到了什么错误?
亚历克斯stackoverflow.com/a/20782579/1607528
首先,您需要在复选框中输入一个值:
!checked
否则,您将无法真正区分您的复选框。
然后:如果您的复选框已选中,则将返回一个值;如果未选中,则将被忽略。您将不会得到NULL,FALSE或其他值。它根本不会通过POST / GET传输到您的php脚本,就像它不在您的HTML代码中一样。这涵盖了主题:是否仅在选中数据后才发布数据?
如果您知道周围有多少个复选框,以及它们的名称-没问题,或者-但如果您不知道,则需要找到解决方法。如果您告诉我们您的复选框的性质是什么,我们可以帮助您找到量身定制的解决方案。
如果您使用的是像PHP这样的服务器端语言,那么比使用隐藏字段提供默认值或编写javascript的方法要简单得多(如果用户的设备/浏览器不支持该方法,则两者都会失败)。
此方法不返回未选中的项目,但它专门标识已选中的项目。否则,如果所有复选框都具有相同的值,则您得到的只是一个,两个或三个重复的值,而不知道选中了哪个项目。但是,假设使用上述方法检查了choice2,那么很容易确定没有检查项目1和3。
解决了:
表格声明...
...
提交时:
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 ...
您可以使用jquery和ajax。在您的Submit事件中,从表单获取所有值并通过ajax提交。您可以像这样在jquery中获得未经检查的值:
$("input:checkbox:not(:checked)")
要么
if ($('#idOfYourCheckBox:checked').length > 0) {
//its checked
}
else {
//not checked
}
这将仅打印选中的字段,因为未选中的字段不会发送到服务器。
您将必须执行一些javascript和隐藏字段技巧。
在这里看看
发布未选中的复选框
!checked
!unchecked
!checked
!sdsk
foreach($_POST['checkbox'] as $key => $value){
$checkbox[$key] = 'checked';
}
print_r($checkbox); // your new array
该示例不起作用。 它仅显示选中的复选框的值。