Perl CGI中单个复选框的javascript验证失败

Perl CGI中单个复选框的javascript验证失败,javascript,perl,checkbox,cgi,Javascript,Perl,Checkbox,Cgi,我有一个小javascript函数,用于检查复选框的验证: function check_this() { var arrCheckboxes = document.create_schedule.elements["username"]; var checkCount = 0; for (var i = 0; i < arrCheckboxes.length; i++) { if(arrCheckboxes[i].checked)

我有一个小javascript函数,用于检查复选框的验证:

function check_this() {
    var arrCheckboxes = document.create_schedule.elements["username"];
    var checkCount = 0;
    for (var i = 0; i < arrCheckboxes.length; i++) {
        if(arrCheckboxes[i].checked)
        {       checkCount += 1;
        }
    }

        if (checkCount > 0){
                return true;
        } else {
                alert("You do not have any users.");
                return false;
        }

}
函数检查\u this(){
var arrcheckbox=document.create_schedule.elements[“username”];
var检查计数=0;
对于(变量i=0;i0){
返回true;
}否则{
警报(“您没有任何用户。”);
返回false;
}
}
下面是相关的Perl代码

print "<form action=\"create-plan.cgi\"  method=\"GET\" name=\"create_schedule\" onsubmit=\"return check_this()\">";
        foreach(@these_account_users)
        {       my $test = $_;
                my $choice =1;
                foreach(@all_conf_users)
                {       if ($test =~ $_)
                        {       #print "Duplicate";
                                $choice = 0;
                                last;
                        }

                }
                if ($choice == 1)
                {       print "<input name=\"username\" value=\"$_\" type=\"checkbox\"><b>$_</b><br />";
                }
                else
                {       print "<input name=\"username\" value=\"$_\" type=\"checkbox\" disabled=\"disabled\">$_<br />";
                }

        }


        print '<br /><input name="backup_type" type="submit" value="Select Type">';

        print "</form><br /><br />";
print”“;
foreach(@这些用户)
{my$test=$\;
我的$choice=1;
foreach(@all_conf_用户)
{如果($test=~$)
{#打印“副本”;
$choice=0;
最后;
}
}
如果($choice==1)
{打印“$\
”; } 其他的 {打印“$\
”; } } 打印“
”; 打印“

”;
运行此选项时,如果未选中任何复选框(即显示警报),则此选项有效。如果存在两个或多个复选框,并且至少选择了一个复选框,则它将接受该复选框并移动到下一屏幕。但是,如果只有一个复选框,并且选中了该复选框,则会抛出警报并拒绝前进

我做错了什么

编辑:


在进一步的测试中,我发现如果只有一个复选框,
arrCheckboxes.length
的值是
undefined
,但是如果有两个或更多帐户,
arrCheckboxes.length
的值等于复选框的确切数目。现在我真的被难住了……

从您的例子来看,似乎当没有选择任何内容并且只有一个复选框时,它不会返回数组实例。更改javascript函数的第一部分,如下所示:

var arrCheckboxes;
if(!document.create_schedule.username.length) {
arrCheckboxes = [document.create_schedule.username];
}
else {
arrCheckboxes = document.create_schedule.elements["username"];
}
这将修复您的错误