javascript单选按钮验证,适用于chrome,不适用于IE



在用户提交表单之前,我有这个代码来检查是否从每组单选按钮中选择了一个。它在chrome中运行良好,但在IE中它总是要求用户回答所有问题,即使他们已经回答了。如何更改此项以在所有浏览器中正常工作?

<script>
function validate(){
  if (checkRadio("Radio1") && checkRadio("Radio2") && checkRadio("Radio3")){
  return true;
  }else{
    alert("Please answer all questions!");
  return false;
  }
}
function checkRadio(name){
  var radio = document.forms.myForm[name];
  for (var option in radio){
    if(radio[option].checked){
      return true;
    }
  }
  return false;
}
</script>

问题出在checkRadio()中--不应将快速/增强的for循环与数组一起使用。

调用for (var option in radio)只需每次返回单选按钮组的名称(例如"Radio1")。

必须使用长格式for循环:

http://jsfiddle.net/ugZL9/

function checkRadio(name) {
    var radio = document.forms.myForm[name];
    for (var i = 0; i < radio.length; i++) {
        if (radio[i].checked) {
            return true;
        }
    }
    return false;
}

最新更新