我在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循环的条件应该是什么?
答案 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>
部分。
希望这会有所帮助。干杯!