验证是否已选中所有单选按钮按钮单击

时间:2014-03-10 11:38:42

标签: javascript html validation dom radio-button

我是Javascript的新手,我有这个Javascript函数,在按钮点击时调用。我想要做的是显示一个警报,如果所有的单选按钮都没有被选中,如果它们是Yes或No,如果它们已被选中,则调用另一个名为addPoints()的函数。

function validateForm(){

    var inputs = document.querySelectorAll('input[type="radio"]');
       var  formValid = false;
       for(var i=0;i<inputs.length;i++){
           if(inputs[i].checked){
               formValid  = true;

            }
       }
      if(!formValid ){   
           alert("Please answer all questions!");
       }

else{

addPoints();

}
} 

以下是我的单选按钮的显示方式

<form name="form1" id="form1">
<input id="rdo1" type="radio" name="q1" value="10">Yes<br>
<input id="rdo2" type="radio" name="q1" value="0">No
</form>

<form name="form2" id="form2">
<input id="rdo3" type="radio" name="q2" value="10">Yes<br>
<input id="rdo4" type="radio" name="q2" value="0">No
</form>

 <form name="form3" id="form3">
<input id="rdo5" type="radio" name="q3" value="10">Yes<br>
<input id="rdo6" type="radio" name="q3" value="0">No
</form>

<button type="submit" onclick="validateForm()">Score?</button>

如果我在页面加载时没有选择任何单选按钮,我使用按钮调用函数validateForm(),消息是正确的,并指出“请回答所有问题”。如果我从任何组中选择YES或NO,则调用addPoints函数。我只希望它在从所有无线电组中选择是或否时调用该功能。

3 个答案:

答案 0 :(得分:1)

DEMO

代码:

function addPoints() {
    alert("Adding points");
}

function validateForm() {

    var inputs = document.querySelectorAll('input[type="radio"]'),
        // An empty array
        checker = [];

    for (var i = 0; i < inputs.length; i++) {
        if (inputs[i].checked) {
            // Whenever find a checked element, push it in checker array
            checker.push(true);
        }
    }

    // Since, there are only 3 radio groups, according to OP,
    // call addPoints when all 3 (yes/no) have been selected
    if (checker.length === 3) {
        addPoints();
    }
    // Show an alert if none has been selected
    else if (checker.length === 0) {
        alert("Please answer all questions!");
    } else {
        // Add something you may want
    }
}

答案 1 :(得分:0)

而不是遍历每个单选按钮,遍历每个表单,并在每个表单中迭代单选按钮

答案 2 :(得分:0)

你可以使用Jquery这样做我使用Check Boxes:)

function validateForm(){

  if($('input[type="checkbox"]:checked').length != $('input[type="checkbox"]').length){
               alert("Please answer all questions!");
        }else{
               alert("ok!");
     }
}