-1

我在 PHP 中创建了如下复选框

echo "<Input type = 'Checkbox' class='cl2'  Name =".$i."/>".$f1.

现在我想验证它,因为当没有选中复选框时,会在提交时创建一个弹出框。

我用下面的js试过了

function Validate() {
    alert (document.getElementsByClassName('cl2')[0].checked);
    for(i=0;i<=5;i++) {
        if(document.getElementsByClassName('cl2')[i].checked == false) {
            alert("approve atleast one request");
        } else {
            return true;
        } 
    }
}

它没有返回任何东西。for循环中的条件应该是什么?

4

3 回答 3

2

当验证无效时,您应该返回 false,见下文。使用 getElementsByClassName 时要小心,它仅在最新的浏览器中受支持,您应该为旧浏览器设置后备,或者使用 jQuery。

function Validate() {
    for (i = 0; i <= 5; i++) {
        if (document.getElementsByClassName('cl2')[i].checked == false) {
            alert("approve atleast one request");
            return false;
        } else {
            return true;
        }
    }
}
于 2012-04-05T07:19:43.803 回答
0

首先,您需要像这样包装您的name属性:

name='" . $i . "'

否则,当字符串被回显时,您与 php 连接的$i将不会在 HTML 标记中用引号括起来,并且您的 HTML 标记将是错误的。

其次,我会格式化 javascript 更像这样(不确切知道你要做什么)

function Validate() {
    var isChecked = false;
    for(i=0; i <= 5; i++) {
        if(document.getElementsByClassName('cl2')[i].checked == true) {
          isChecked = true;
        }
    }
    return isChecked;
}

if(Validate()) {
    // do something 
} else {
    alert("approve atleast one request");   
}

在循环中生成返回语句是不好的风格,所以要避免。另外,我会尝试将您的 javascript 插入到您回显的 php下方的脚本标记中,以确保脚本在内容加载后执行。否则,您可以在标签中插入一个onload="Validate()"属性<body>,并将 javascript 放在<head>页面的部分中。

希望这可以帮助。干杯!

于 2012-04-05T07:36:31.697 回答
0

要获取 for 循环的长度,请尝试以下操作:

var elem = this.getElementsByTagName('cl2');
for (var i = 0; i < elem.length; i++)
于 2012-04-05T07:23:54.350 回答