2012-02-16 116 views
3

我发现,这样做的脚本,但他们只用一个单选按钮的名称的工作,我有5个不同的单选按钮组。我如何检查,如果它现在选择我现在表格提交Javascript检查单选按钮是否被选中?

if(document.getElementById('radiogroup1').value=="") { 
     alert("Please select option one"); 
     document.getElementById('radiogroup1').focus(); 
     return false; 
    } 

不起作用。

+0

的[?我如何检查单选按钮是否与JavaScript的选择(可能的复制http://stackoverflow.com/questions/1423777/how-can-i-签是否-A-无线电按钮被选择的与 - 的JavaScript) – Siraj 2017-03-14 18:09:51

回答

1

这里有一个很好的教程 - >http://www.somacon.com/p143.php


// return the value of the radio button that is checked 
// return an empty string if none are checked, or 
// there are no radio buttons 
function getCheckedValue(radioObj) { 
    if(!radioObj) return ""; 
    var radioLength = radioObj.length; 
    if(radioLength == undefined) 
     if(radioObj.checked) return radioObj.value; 
     else return ""; 
    for(var i = 0; i < radioLength; i++) { 
     if(radioObj[i].checked) return radioObj[i].value; 
    } 
    return ""; 
} 

// set the radio button with the given value as being checked 
// do nothing if there are no radio buttons 
// if the given value does not exist, all the radio buttons 
// are reset to unchecked 
function setCheckedValue(radioObj, newValue) { 
    if(!radioObj) return; 
    var radioLength = radioObj.length; 
    if(radioLength == undefined) { 
     radioObj.checked = (radioObj.value == newValue.toString()); 
     return; 
    } 
    for(var i = 0; i < radioLength; i++) { 
     radioObj[i].checked = false; 
     if(radioObj[i].value == newValue.toString()) radioObj[i].checked = true; 
    } 
} 
3
var checked = false, radios = document.getElementsById('radiogroup1'); 
for (var i = 0, radio; radio = radios[i]; i++) { 
    if (radio.checked) { 
     checked = true; 
     break; 
    } 
} 

if (!checked) { 
    alert("Please select option one"); 
    radios.focus(); 
    return false; 
} 

return true; 
+3

通过说明书中,页面上没有两个元件应具有相同的ID。 – 2013-03-01 21:03:37

+0

'document.getElementsById()'是错误的。 [元素]之后的[** s **]。 它应该是'文档。getElementById()' OR 'document.getElementsByClassName []()' – Siraj 2017-03-14 18:03:38

0

你没事用jQuery?如果是这样的:

$(document).ready(function(){ 
    if($('input[type=radio]:checked').length == 0) 
    { 
     alert("Please select option one");   
     document.getElementById('radiogroup1').focus();   
     return false;  
    } 
} 
+0

'$(document).ready(function(){'使用'$(function(){'后者更新,并且通过更多的跨浏览器过滤来运行doc重做检查,并且更好地适应jquey的风格 – SpYk3HH 2012-02-16 04:34:52

+0

此外,通过简单的jquery样式调用if($('input.classnameIsEasier')),if语句在jQuery中变得更加流畅。 (':checked')){/ * do work * /};' – SpYk3HH 2012-02-16 04:38:22

+0

还有一件事,如果你要使用jquery并且需要对无线电和检查进行表单验证等,请使用[this plugin]( http://jquery.malsup.com/form/)非常适合为了更好的功能和更好的验证时机而添加你的表单 – SpYk3HH 2012-02-16 04:40:19

5

如果你有你的心脏上使用标准的JavaScript然后设置:

函数定义

var isSelected = function() { 
    var radioObj = document.formName.radioGroupName; 

    for(var i=0; i<radioObj.length; i++) { 
     if(radioObj[i].checked) { 
      return true; 
     } 
    } 

    return false; 
}; 

使用

if(!isSelected()) { 
    alert('Please select an option from group 1 .'); 
} 

我会建议使用g jQuery。它有很多选择器选项,它们在一起使用时将大部分代码简化为单行。

替代的解决方案

if($('input[type=radio][name=radioGroupName]:selected').length == 0) { 
    alert('Please select an option from group 1 .'); 
} 
+1

这个答案是**古代**(在网络年),所以请注意[jQuery不是最好的解决方案选择元素](http://blog.garstasio.com/you-dont-ne ed-jquery/selectors /)现在IE <8都是死的。 – BryanH 2016-03-07 20:15:21

1

一个很简单的功能是:

<script type="text/javascript"> 

function checkRadios(form) { 
    var btns = form.r0; 
    for (var i=0; el=btns[i]; i++) { 
    if (el.checked) return true; 
    } 
    alert('Please select a radio button'); 
    return false; 
} 
</script> 

<form id="f0" onsubmit="return checkRadios(this);"> 
    one<input type="radio" name="r0"><br> 
    two<input type="radio" name="r0"><br> 
    three<input type="radio" name="r0"><br> 
    <input type="submit"> 
</form> 

但是,你前人的精力总是在默认情况下(即与选择属性)选择一个单选按钮,一些用户代理可以自动选择第一个按钮。然后你只需要检查默认(通常是第一个)是否被选中。

0

为什么不直接使用oneliner?

我写了这个代码,它将提交表单如果至少一个无线电检查:

(function(el){for(var i=el.length;i--;) if (el[i].checked) return el[i].form.submit()||1})(document.form_name.radio_name)||alert('please select item') 

否则就会使警报。或者你也可以修改它与形式的onsubmit使用:

return (function(el){for(var i=el.length;i--;) if (el[i].checked) return 1})(document.form_name.radio_name)||alert('please select item') 

只需更换form_nameradio_name相应。

看看它是如何工作的:http://jsfiddle.net/QXeDv/5/

+0

我知道这是一个旧的代码,但是将所有的代码写在一行上并不会让你的代码成为'一行'。避免这种做法。 – muhr 2015-12-21 15:47:15

+0

你其实是错的。他们是可以联机工作的线索。请看小提琴了解他们如何工作。如果你不明白它的作用......那么最好避免评论。 – Anonymous 2016-06-11 08:07:18

相关问题