我知道网上有很多线程,我已经尝试了所有线程,但它仍然无效,请帮忙。 我想确保至少选择了一个程序。我检查了控制台,但没有错误,也说调试器未激活。
JavaScript:
function validateForm() {
if (document.getElementById('cfname').value === '') {
document.getElementById('errcfname').innerHTML = "Please enter firstname";
return false;
}
if (document.enrollment.clname.value == "") {
document.getElementById('errclname').innerHTML = "Please enter lastname";
clname.focus();
return false;
}
if(validateRadio (document.getElementsByName('gender'))) {
return true;
} else {
document.getElementById('errgender').innerHTML = "Please specify gender";
return false;
}
var chk = document.getElementsByName('program[]');
var len = chk.length;
var checked = false;
for(i=0;i<len;i++) {
if(chk[i].checked) {
checked=true;
break;
}
}
if (!checked) {
document.getElementById('errpgm').innerHTML = "Please specify program";
return false;
}
}
return true;
}
function validateRadio(radios) {
for (i = 0; i < radios.length; ++ i) {
if (radios[i].checked)
return true;
}
return false;
}
function validate(id,error) {
var value = document.getElementById(id).value;
var err = document.getElementById(error);
if(!value) {
err.innerHTML = "*required";
} else {
err.innerHTML = "*";
}
}
答案 0 :(得分:0)
这里有一个问题:
> var chk = document.getElementsByName('program[]');
> var len = chk.length;
>
> for (i=0; i<len; i++) {
>
> if (chk[i].checked) {
> return true;
>
> } else {
> document.getElementById('errpgm').innerHTML = "Please specify gender";
> return false;
> }
> }
在上面,只会测试第一个复选框,然后该函数将根据是否被选中返回true或false。如果您希望用户只选择一个复选框,请使用单选按钮,默认选中一个。否则,请使用以下内容:
var oneChecked = false;
while (i-- && !oneChecked) {
oneChecked = chk[i].checked;
}
if (!oneChecked) {
document.getElementById('errpgm').innerHTML = "Please specify gender";
return false;
}
此外,错误消息似乎不适用于复选框值,因为它们似乎与性别无关。
答案 1 :(得分:0)
试试这个:
var chk = document.getElementsByName('program[]');
var len = chk.length;
var has_program = false;
for(i=0;i<len;i++) {
if(chk[i].checked) {
has_program = true;
break;
}
}
if( !has_program )
{
document.getElementById('errpgm').innerHTML = "Please specify gender";
return false;
}
return true;
答案 2 :(得分:0)
基本上你的事情过于复杂。
对于初学者,您应该使用像jQuery这样的客户端框架。我已经提供了一个JSFiddle,它可以在这里为您工作,http://jsfiddle.net/nickyt/g2Ab3。
如果您是在纯JavaScript中执行此操作,则可以使用以下内容:
document.forms[0]["program[]"]
获取复选框组中的所有复选框。从那里你将循环这个集合,如果没有任何表单元素具有.checked
属性,你将失败验证,但正如我所提到的,jQuery为你处理了很多这个基本的JavaScript。我认为阅读jQuery选择器也会让你受益,http://api.jquery.com/category/selectors