javascript中的单选按钮验证

Posted

技术标签:

【中文标题】javascript中的单选按钮验证【英文标题】:Radio button validation in javascript 【发布时间】:2012-05-07 12:28:00 【问题描述】:

需要验证单选按钮输入,即当按下提交按钮并且没有选择单选按钮时,它会提醒用户说“请选择一个复选框”,如果已选择单选按钮,则只需提交表单,不需要提醒。

为此只能使用 html CSS 和 javascript,我知道它在 jquery 中要容易 1000 倍,但遗憾的是我不能使用它。

而且我知道我的 HTML 无效,但除非它直接影响到我当前的问题,否则我会稍后处理。

<form name="form1" action="#" onsubmit="return validateForm()" method="post"> 

    First time visitor?:<br/>
            <label for="s1">Yes</label>
            <input type="radio" id="1" name="yesno" value="1"/>
            <br/>
            <label for="s2">No</label>
            <input type="radio" id="1" name="yesno" value="2"/>

            <br/>       

    <input type="submit" value="Submit"><br/>
    </form>

非常感谢任何指针,谢谢。

【问题讨论】:

您删除了您的问题以重新制作相同的问题,因为另一个问题的 cmets 为负数?顺便说一句,无效标记(如重复 ID)确实直接影响您当前的问题。 注意:ids不应该以数字开头 @benji 请发布您的 validateForm 函数。 【参考方案1】:

第一:如果你知道你的代码不正确,你应该在做任何事情之前修复它!

你可以这样做:

function validateForm() 
    var radios = document.getElementsByName("yesno");
    var formValid = false;

    var i = 0;
    while (!formValid && i < radios.length) 
        if (radios[i].checked) formValid = true;
        i++;        
    

    if (!formValid) alert("Must check some option!");
    return formValid;
​

查看实际操作:http://jsfiddle.net/FhgQS/

【讨论】:

该脚本应该适用于超过 2 个单选按钮,不是吗?我正在使用您的代码,但我收到一个错误,即 validateForm() 未定义?您认为是什么原因造成的? 我发现了问题所在。我从 jsFiddle 复制了它并添加了导致我的代码出错的隐藏字符。这是包含更多详细信息的页面***.com/questions/4404526/… 我会将行 if (radios[i].checked) formValid = true; 更改为 if (radios[i].checked) formValid = radios [i].值; 所以它变成了选中项的值。这样您就可以知道检查了哪个项目。此外,即使只有一项,也要始终使用大括号。【参考方案2】:

使用 javascript 的完整验证示例:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Radio button: full validation example with javascript</title>
        <script>
            function send() 
                var genders = document.getElementsByName("gender");
                if (genders[0].checked == true) 
                    alert("Your gender is male");
                 else if (genders[1].checked == true) 
                    alert("Your gender is female");
                 else 
                    // no checked
                    var msg = '<span style="color:red;">You must select your gender!</span><br /><br />';
                    document.getElementById('msg').innerHTML = msg;
                    return false;
                
                return true;
            

            function reset_msg() 
                document.getElementById('msg').innerHTML = '';
            
        </script>
    </head>
    <body>
        <form action="" method="POST">
            <label>Gender:</label>
            <br />
            <input type="radio" name="gender" value="m" onclick="reset_msg();" />Male
            <br />
            <input type="radio" name="gender" value="f" onclick="reset_msg();" />Female
            <br />
            <div id="msg"></div>
            <input type="submit" value="send>>" onclick="return send();" />
        </form>
    </body>
</html>

问候,

费尔南多

【讨论】:

【参考方案3】:

你可以这样做

var option=document.getElementsByName('yesno');
     
if (!(option[0].checked || option[1].checked)) 
    alert("Please Select Your Gender");
    return false;

【讨论】:

【参考方案4】:
<form action="" method="post" name="register_form" id="register_form" enctype="multipart/form-data">

    <div class="text-input">
        <label>Gender: </label>
        <input class="form-control" type="radio" name="gender" id="male" value="male" />
        <label for="male">Male</label>
        <input class="form-control" type="radio" name="gender" id="female" value="female" />
        <label for="female">Female</label>
    </div>
    <div class="text-input" align="center">
        <input type="submit" name="register" value="Submit" onclick="return radioValidation();" />
    </div>

</form>

<script type="text/javascript">
    function radioValidation()

        var gender = document.getElementsByName('gender');
        var genValue = false;

        for(var i=0; i<gender.length;i++)
            if(gender[i].checked == true)
                genValue = true;    
            
        
        if(!genValue)
            alert("Please Choose the gender");
            return false;
        

    
</script>

来源:http://chandreshrana.blogspot.in/2016/11/radio-button-validation-in-javascript.html

【讨论】:

【参考方案5】:
document.forms[ 'forms1' ].onsubmit = function() 
    return [].some.call( this.elements, function( el ) 
        return el.type === 'radio' ? el.checked : false
     )

只是我脑子里想的东西。不确定代码是否正常工作。

【讨论】:

【参考方案6】:

除了上述 Javascript 解决方案之外,您还可以通过在标记中根据需要标记单选按钮来使用 HTML 5 解决方案。这将消除对任何 Javascript 的需求,让浏览器为您完成工作。

请参阅HTML5: How to use the "required" attribute with a "radio" input field,了解如何做好这项工作的更多信息。

【讨论】:

以上是关于javascript中的单选按钮验证的主要内容,如果未能解决你的问题,请参考以下文章

如何验证magento中的单选按钮?

如何使用名称和类型验证 html 中的单选按钮

如何隐藏单选按钮列表中的单选按钮之一?

试图验证我的单选按钮,但它只是不工作

JavaScript 读取 IE 和 FireFox 中的单选按钮值

验证动态单选按钮jQuery