Javascript检查是否设置了数组

Javascript检查是否设置了数组,javascript,forms,validation,Javascript,Forms,Validation,我有一个表单验证程序脚本,用于验证是否至少选中了1个复选框 <form name="samples" onsubmit="return validateForm();" action="process.php" method="post"> <input type="checkbox" name="products[]" value="product-a"> <input type="checkbox" name="products[]" value

我有一个表单验证程序脚本,用于验证是否至少选中了1个复选框

<form name="samples" onsubmit="return validateForm();" action="process.php" method="post">
    <input type="checkbox" name="products[]" value="product-a">
    <input type="checkbox" name="products[]" value="product-b">
    <input type="checkbox" name="products[]" value="product-c">
</form>

<script>
function validateForm() {
    var counter = document.forms["samples"]["products"].value;
    if (x == null || x == "") {
        alert("Please select at least one product");
        return false;
    }
}
</script>

函数validateForm(){
var counter=document.forms[“samples”][“products”].value;
如果(x==null | | x==“”){
警告(“请至少选择一种产品”);
返回false;
}
}
上面的代码似乎不起作用


我做错了什么?

您没有名为
产品的输入元素,您有名为
产品[]的元素

arrayOfProductInputs = document.forms["samples"]["products[]"];
// ^^^ loop through those
总计:

function validateCheckboxes()  {
    var arrayOfProductInputs = document.forms["samples"]["products[]"];
    var productsChecked = 0;
    arrayOfProductInputs.forEach(function(itm){
        if(itm.checked) productsChecked++;
    });

    if(productsChecked <= 0)  {
        alert("Please select at least one product");
        return false;
    }
    return true;
}
函数validatecheckbox(){
var arrayOfProductInputs=document.forms[“samples”][“products[]”;
var productsChecked=0;
arrayOfProductInputs.forEach(函数(itm){
如果(itm.checked)productsChecked++;
});
如果(productsChecked<代码>
函数validateForm(){
var标志=假;
var products=document.samples[“products[]”;

对于(var i=0;i您的问题是什么?您是否可以检查
产品[]的值
为空?可能的重复是假设只有3个产品…并且您在循环的每次迭代中都重新选择表单元素…这很糟糕…根据您的建议进行了修改Neal.Dangit。看起来这应该可以工作,但它不工作…它只是在未选中任何内容时发送表单。@BrianBarrus如果
arrayOfProductInputs
未定义,您可以尝试添加一个检查。看起来像是ArrayProducts[]
<script type = "text/javascript">
function validateForm() {
var flag = false;
var products = document.samples["products[]"];
for (var i = 0; i<products.length; i++) {
    if(products[i].checked){
        flag = true;
    }
}
if (flag != true) {
    alert("Please select at least one product");
    return false;
}
return true;
}
</script>