HTML复选框验证

时间:2012-04-05 07:16:45

标签: php javascript html

我在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循环的条件应该是什么?

3 个答案:

答案 0 :(得分: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;
        }
    }
}

答案 1 :(得分:0)

要获得for循环的长度,请尝试以下方法:

var elem = this.getElementsByTagName('cl2');
for (var i = 0; i < elem.length; i++)

答案 2 :(得分:0)

首先,您需要包含名称属性,如下所示:

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>部分。

希望这会有所帮助。干杯!