使用php和javascript时是否在复选框名称中使用括号?

使用php和javascript时是否在复选框名称中使用括号?,php,javascript,forms,checkbox,brackets,Php,Javascript,Forms,Checkbox,Brackets,我有一个带有如下复选框的表单: <input type="checkbox" name="type[]" value="1" />Fast Food<br> <input type="checkbox" name="type[]" value="2" />Table Service<br> <input type="checkbox" name="type[]" value="3" />Cafeteria<

我有一个带有如下复选框的表单:

    <input type="checkbox" name="type[]" value="1" />Fast Food<br>
    <input type="checkbox" name="type[]" value="2" />Table Service<br>
    <input type="checkbox" name="type[]" value="3" />Cafeteria<br>
快餐
餐桌服务
自助餐厅
当我使用名称中的括号(键入[])时,我的php工作:

    $type=$_POST['type'];

    echo "types are:";
for ( $counter = 0; $counter < sizeof($type); $counter += 1) {
    echo "<br>".$type[$counter];
}
$type=$\u POST['type'];
回声“类型为:”;
对于($counter=0;$counter”$type[$counter];
}
但我的javascript不起作用:

    var f = document.addform;
    for (var i=0;i<f.type.length;i++){
        if(f.type[i].checked==true){
            break;
        }
        if(i==(f.type.length-1)){
            alert("No categories entered!");
            valid=false;
        }
    }
var f=document.addform;

对于javascript中的(var i=0;i,可以使用
f['type[]]]
而不是
f.type

只有php将[]更改为数组。

php有一个不同寻常的系统,用于处理具有相同名称的多个表单控件,它希望这些名称包括
[]
,但在变量名中不使用它们

JavaScript没有这个问题。该属性仍将包含括号

当然,方括号在JS中有特殊的含义,所以不能使用点符号来访问属性

f['type[]'][i].checked

当然,你也可以在方括号之间放一个“key”(即给每个字段一个实际的唯一名称)。类似于“type[1]”、“type[2]”和“type[3]”。PHP仍然将其放入数组(由这些数字键入),JS也可以访问它们。

你可以始终使用
文档。getElementsByName()
因为它以字符串作为参数

像这样:

var f = document.getElementsByName("type[]");
for (var i=0; i < f.length; i++){
    if(f[i].checked == true){
        break;
    }
    if(i == (f.length-1)){
        alert("No categories entered!");
        valid=false;
    }
}
var f=document.getElementsByName(“type[]);
对于(变量i=0;i
…但不要使用问题中给出的语法。您仍然必须将整个名称视为属性名称。
var f = document.getElementsByName("type[]");
for (var i=0; i < f.length; i++){
    if(f[i].checked == true){
        break;
    }
    if(i == (f.length-1)){
        alert("No categories entered!");
        valid=false;
    }
}