简体   繁体   English

验证是否已选中所有单选按钮,或者验证按钮是否未单击

[英]Validate that ALL radio buttons are selected or NOT on button Click

I am very new to Javascript and I have this Javascript function that is called on button click. 我对Java语言非常陌生,并且具有单击按钮时调用的Javascript函数。 What I want to do is show an alert if ALL the radio buttons have NOT been selected wether they are Yes or No and if they have ALL been selected call another function called addPoints() below. 我想做的是显示一个警报,如果未选中所有单选按钮(是或否),并且都已选中,则调用下面的另一个函数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();

}
} 

Below is how my radio buttons are presented 以下是我的单选按钮的显示方式

<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>

If I do not select any radio button when the page loads and I call the function validateForm() using the button the message is correct and states "Please answer all questions". 如果在页面加载时没有选择任何单选按钮,并且使用该按钮调用了validateForm()函数,则消息正确,并显示“请回答所有问题”。 If I select either YES or NO from any group it calls the addPoints function. 如果我从任何组中选择是或否,它将调用addPoints函数。 I only want it to call that function when ALL either Yes or Nos have been selected from All radio groups. 我只希望当从“所有”广播组中选择“是”或“全部”时才调用该函数。

DEMO DEMO

Code: 码:

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
    }
}

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

You Can do it using Jquery Like this I used Check Boxes :) 您可以使用Jquery做到这一点,就像我用Check Boxes :)

function validateForm(){

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM