JavaScript警报机制不起作用

时间:2018-07-01 08:49:15

标签: javascript html web

我希望我的脚本表现为在提交表单时,如果未选中任何单选按钮,它将提醒用户选择一个。我已经编写了代码,但是没有用。请帮助。

function validateRadios() {
  var c = document.getElementsByName("qualification");
  for(var a=0;a<=c.length;a++) {
    if(c[a].checked ) {
      alert("Form OK!");
      return true;
    }
  }
  alert("Please select one");
  return false;
} 
<form onSubmit="return validateRadios();">
   Select your qualification     
  Intermediate<input type="radio" name="qualification" value="inter" />
  Bachelors<input type="radio" name="qualification" value="Bchlrs"/>
  Masters<input type="radio" name="qualification" value="mstrs"/>
 </br>
 <input type="submit" value="Lock details"/>
</form>

2 个答案:

答案 0 :(得分:1)

问题在您的 for循环条件中。它会迭代到length + 1个元素。只需删除=条件就可以了。

    function validateRadios() {
      var c = document.getElementsByName("qualification");
      for(var a=0;a<c.length;a++) {
        if(c[a].checked ) {
          alert("Form OK!");
          return true;
        }
      }
      alert("Please select one");
      return false;
    } 
     <form onSubmit="return validateRadios();">
     Select your qualification     
        Intermediate<input type="radio" name="qualification" value="inter" />
        Bachelors<input type="radio" name="qualification" value="Bchlrs"/>
        Masters<input type="radio" name="qualification" value="mstrs"/>
       </br>
       <input type="submit" value="Lock details"/>        
    </form>

答案 1 :(得分:0)

这样会更好:)

function validateRadios() {
  var status = false
  var c = document.getElementsByName("qualification").forEach((item) => {
    status = item.checked ? true : status
  })
  console.log(status)
}

它对您不起作用,因为它不仅返回包含元素而且包含方法的数组。