-1

我知道网上有很多帖子,我都试过了,但还是不行,请帮忙。我想确保至少选择了一个程序。我检查了控制台,但没有错误,还说调试器未激活。

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 = "*";
        }
    }
4

3 回答 3

0

基本上你把事情复杂化了。

对于初学者,您应该使用像 jQuery 这样的客户端框架。我在这里提供了一个 JSFiddle,它可以为你工作,http://jsfiddle.net/nickyt/g2Ab3

如果您要在纯 JavaScript 中执行此操作,您将使用如下内容:

document.forms[0]["program[]"]

获取复选框组中的所有复选框。从那里你将循环这个集合,如果没有任何表单元素具有该.checked属性,你将无法通过验证,但正如我所提到的,jQuery 为你处理了很多这种基本的 JavaScript。我认为阅读 jQuery 选择器也会使您受益,http: //api.jquery.com/category/selectors

于 2013-10-21T01:36:45.303 回答
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;
于 2013-10-21T01:30:56.223 回答
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;
}

此外,错误消息似乎不适用于复选框值,因为它们似乎与性别没有任何关系。

于 2013-10-21T01:24:44.137 回答