JavaScript表单验证-

JavaScript表单验证-,javascript,html,Javascript,Html,我正在尝试获得一个基本的javascript验证。出于某种原因,它拾取文本和下拉列表,但不拾取单选按钮?我做错了什么 函数validateForm(formId) { var输入,指数; var form=document.getElementById(formId); inputs=form.getElementsByTagName('input'); 用于(索引=0;索引

我正在尝试获得一个基本的javascript验证。出于某种原因,它拾取文本和下拉列表,但不拾取单选按钮?我做错了什么


函数validateForm(formId)
{
var输入,指数;
var form=document.getElementById(formId);
inputs=form.getElementsByTagName('input');
用于(索引=0;索引
要验证单选按钮,您需要检查所有单选按钮,查看选中的
属性是
true

<script>
      function validateForm(){
            for(i=0; i<document.form.radios.length; i++){       
              if(document.form.radios[i].checked==false){
              c=1;
              }
                else{
                c=0;
                break;
                }}        

                if(c==1){
                alert('Please select an option');
                }
         }
 </script>

下面提供了一种方法,您可以通过该方法确定表单中是否有多个单选按钮

function hasEmptyRadio(radioMap) {
    var emptyRadio = false;
    for (var i in radioMap) {
        if (radioMap.hasOwnProperty(i) && !radioMap[i]) {
            emptyRadio = true;
            break;
        }
    }
    return emptyRadio; // return the radio object or name if required
}

function markEmptyRadios(radioMap, radioObj) {
    var checked = radioObj.checked;
    radioMap[radioObj.name] = radioMap[radioObj.name] || checked;
}


function validateForm(formId) {
    var inputs, index;
    var radioMap = {};
    var form = document.getElementById(formId);
    inputs = form.getElementsByTagName('input');
    for (index = 0; index < inputs.length; ++index) {
        if (inputs[index].type === 'radio') {
            markEmptyRadios(radioMap, inputs[index])
        }
        // Your check for other input type can go here
    }
    alert("Radio Empty check returned => " + hasEmptyRadio(radioMap));
}
函数haspendyradio(无线地图){
var emptyRadio=false;
用于(radioMap中的var i){
if(radioMap.hasOwnProperty(i)&&!radioMap[i]){
emptyRadio=true;
打破
}
}
return emptyRadio;//如果需要,返回无线电对象或名称
}
功能标记EmptyRadios(radioMap,radioObj){
var checked=radioObj.checked;
radioMap[radioObj.name]=radioMap[radioObj.name]|选中;
}
函数validateForm(formId){
var输入,指数;
var radioMap={};
var form=document.getElementById(formId);
inputs=form.getElementsByTagName('input');
用于(索引=0;索引”+hasEmptyRadio(无线电地图));
}

单选按钮有点特殊;每个名称相同的组都属于同一个对象。因此,我认为只有在选中/选择其中一个时,您才会有价值。我同意您的观点。我的目标是抓住那些没有价值的人,他们应该正确地转换空字符串或空字符串。如果您在Ja中遇到问题,可以在HTML5中执行此操作vascript I在HTML5中使用的是required,但出现了太多用户错误。出于某种原因,现在没有出现任何空值。:/@user4107395请使用正确的formId尝试此编辑过的脚本?您发布的函数在
if(inputs[index].value==null | | inputs[index].value==“”)附近有一个额外的右括号)
以及您丢失的
for loop
<form>
      <input type="radio" name="gender" value="Male" required /> Male
      <input type="radio" name="gender" value="Female" /> Female

      <input type="submit" name = "sub" value="SAVE" />
</form>
function hasEmptyRadio(radioMap) {
    var emptyRadio = false;
    for (var i in radioMap) {
        if (radioMap.hasOwnProperty(i) && !radioMap[i]) {
            emptyRadio = true;
            break;
        }
    }
    return emptyRadio; // return the radio object or name if required
}

function markEmptyRadios(radioMap, radioObj) {
    var checked = radioObj.checked;
    radioMap[radioObj.name] = radioMap[radioObj.name] || checked;
}


function validateForm(formId) {
    var inputs, index;
    var radioMap = {};
    var form = document.getElementById(formId);
    inputs = form.getElementsByTagName('input');
    for (index = 0; index < inputs.length; ++index) {
        if (inputs[index].type === 'radio') {
            markEmptyRadios(radioMap, inputs[index])
        }
        // Your check for other input type can go here
    }
    alert("Radio Empty check returned => " + hasEmptyRadio(radioMap));
}