网页中有多组radio具体数目不详,如何判断所有组都选中才允许提交?

p95635746 2011-08-18 06:33:18

<html>
<body>
<form>
<table border="1">
<tr>
<td><input type="radio" name="i1" value="0">是</td>
<td><input type="radio" name="i1" value="1">否</td>
</tr>

<tr>
<td><input type="radio" name="i2" value="0">是</td>
<td><input type="radio" name="i2" value="1">否</td>
</tr>

<tr>
<td><input type="radio" name="i3" value="0">是</td>
<td><input type="radio" name="i3" value="1">否</td>
</td>
</form>
</body>
</html>

网页中有多组类似上面的radio具体数目不详,现在我想实现的功能是
每组中必须选中一项才允许提交,请问用JS如何实现,谢谢!
...全文
385 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
shun90 2014-03-15
  • 打赏
  • 举报
回复
要是checkbox、text等类型都有呢,象问卷调查那种,该怎么判断每个题都作了选择啊!本人正学习中。
Abin-2008 2011-12-16
  • 打赏
  • 举报
回复
謝謝你們提供寫法...thx!!!
乌镇程序员 2011-08-19
  • 打赏
  • 举报
回复
<html>
<head>
<script type="text/javascript">
window.onload = function() {
document.getElementsByTagName('form')[0].onsubmit = function() {
var obj = this.getElementsByTagName('input');
var _F = {};
for(var i = 0; i < obj.length; i ++) {
if (obj[i].type.toLowerCase() == 'radio') {
var n = obj[i].name;
if (typeof(_F[n]) == 'undefined') _F[n] = false;
if (obj[i].checked) _F[n] = true;
}
}
for(x in _F) {
if (!_F[x]) {
alert('每组都要选');
return false;
}
}
return true;
}
}
</script>
</head>
<body>
<form>
<table border="1">
<tr>
<td><input type="radio" name="i1" value="0">是</td>
<td><input type="radio" name="i1" value="1">否</td>
</tr>

<tr>
<td><input type="radio" name="i2" value="0">是</td>
<td><input type="radio" name="i2" value="1">否</td>
</tr>

<tr>
<td><input type="radio" name="i3" value="0">是</td>
<td><input type="radio" name="i3" value="1">否</td>
</tr>
</table>
<input type="submit" />
</form>
</body>
</html>
yuxh81 2011-08-19
  • 打赏
  • 举报
回复
算法:页面中被选中的Radio个数,必需等于Radio组数
p95635746 2011-08-19
  • 打赏
  • 举报
回复
谢谢大家这么热情,有的贴代码,有的提想法。。。已经可以了,现在可以结贴了。。。
风一样的大叔 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 theforever 的回复:]
上面错了,忘了分组的问题。
下面改正了,楼主测试看看:

HTML code


<head>
<title>单选按钮验证示例_by_theforever_csdn_net</title>
<script type="text/javascript" charset="utf-8" src="http://jqueryjs.googlecode.com/files/jquery-1……
[/Quote]学习了
最后一个菜鸟 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 p95635746 的回复:]

我最近在做问卷调查,我举的例子radio都是只有两个选项不算难,实际的问卷是有的是两个选项,有的是三个选项,这岂不是很麻烦。。。
[/Quote]
还是单选吗
MuBeiBei 2011-08-18
  • 打赏
  • 举报
回复
<html>
<body>
<form>
<table border="1">
<tr>
<td><input type="radio" name="i1" value="0">是</td>
<td><input type="radio" name="i1" value="1">否</td>
</tr>

<tr>
<td><input type="radio" name="i2" value="0">是</td>
<td><input type="radio" name="i2" value="1">否</td>
</tr>

<tr>
<td><input type="radio" name="i3" value="0">是</td>
<td><input type="radio" name="i3" value="1">否</td>
<td><input type="radio" name="i3" value="2">无</td>
</tr>
</table>
</form>
<input type="button" value="click me" id="btn" />

<script>
document.getElementById('btn').onclick = function(){
var trs = document.getElementsByTagName('tr'),
len = trs.length,count = 0;

for(var i = 0; i < len; i++){
var inputs = document.getElementsByName('i'+(i+1)),ilen= inputs.length;

for(var j = 0; j < ilen; j++){
if(inputs[j].checked){
count++;
}
}
}

if(count == len){
alert('每项都选了');
}else{
alert('请选择')
}
};
</script>
</body>
</html>



楼主用这个,不管每个选项题有多少选项都OK~·
KK3K2005 2011-08-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 p95635746 的回复:]

我最近在做问卷调查,我举的例子radio都是只有两个选项不算难,实际的问卷是有的是两个选项,有的是三个选项,这岂不是很麻烦。。。
[/Quote]

兄弟 2个选项 3个选项 4个选项 N个选项 从处理一个集合的角度来看 有区别吗
p95635746 2011-08-18
  • 打赏
  • 举报
回复
我最近在做问卷调查,我举的例子radio都是只有两个选项不算难,实际的问卷是有的是两个选项,有的是三个选项,这岂不是很麻烦。。。
p95635746 2011-08-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 theforever 的回复:]
一旦用了JQ,偷懒也会成为一种时尚:

HTML code

<head>
<title>单选按钮验证示例_by_theforever_csdn_net</title>
<script type="text/javascript" charset="utf-8" src="http://jqueryjs.googlecode.com/files/jquery-1.3.min.js"><……
[/Quote]
好的,谢谢。。。
  • 打赏
  • 举报
回复
上面错了,忘了分组的问题。
下面改正了,楼主测试看看:

<head>
<title>单选按钮验证示例_by_theforever_csdn_net</title>
<script type="text/javascript" charset="utf-8" src="http://jqueryjs.googlecode.com/files/jquery-1.3.min.js"></script>
<script type="text/javascript">
$(function() {
$('#theforever_csdn').click(function(){
//当每组都只有两个选项的时候。
if($("input[type=radio]:checked").length==$("input[type=radio]").length/2)
$('#theforever__csdn').submit();
});
});
</script>
</head>
<body>
<form id="theforever__csdn">
<table border="1">
<tr>
<td><input type="radio" name="i1" value="0" checked>是</td>
<td><input type="radio" name="i1" value="1">否</td>
</tr>
<tr>
<td><input type="radio" name="i2" value="0">是</td>
<td><input type="radio" name="i2" value="1">否</td>
</tr>
<tr>
<td><input type="radio" name="i3" value="0">是</td>
<td><input type="radio" name="i3" value="1">否</td>
</tr>
<input id="theforever_csdn" type="button" value="提交" />
</form>
  • 打赏
  • 举报
回复
一旦用了JQ,偷懒也会成为一种时尚:

<head>
<title>单选按钮验证示例_by_theforever_csdn_net</title>
<script type="text/javascript" charset="utf-8" src="http://jqueryjs.googlecode.com/files/jquery-1.3.min.js"></script>
<script type="text/javascript">
$(function() {
$('#theforever_csdn').click(function(){
if($("input[type=radio]:checked").length==$("input[type=radio]").length)
$('#theforever__csdn').submit();
});
});
</script>
</head>
<body>
<form id="theforever__csdn">
<table border="1">
<tr>
<td><input type="radio" name="i1" value="0" checked>是</td>
<td><input type="radio" name="i1" value="1">否</td>
</tr>
<tr>
<td><input type="radio" name="i2" value="0">是</td>
<td><input type="radio" name="i2" value="1">否</td>
</tr>
<tr>
<td><input type="radio" name="i3" value="0">是</td>
<td><input type="radio" name="i3" value="1">否</td>
</tr>
<input id="theforever_csdn" type="button" value="提交" />
</form>
p95635746 2011-08-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 p95635746 的回复:]
HTML code

<html>
<body>
<form>
<table border="1">
<tr>
<td><input type="radio" name="i1" value="0">是</td>
<td><input type="radio" name="i1" value="1">否</td>
</tr>

<tr>
<td><input type="r……
[/Quote]
好的,非常感谢。。。我先试试看看
豆虫 2011-08-18
  • 打赏
  • 举报
回复
下班前写了个土的 楼主可参考
function isCanSubmit(){
var tags = document.forms[0].getElementsByTagName('input');
for(var i = 0,len = tags.length;i<len;i++){
var comp = tags[i];
if(comp.type == 'radio'){
var radio0 = document.getElementsByName(comp.name)[0];
var radio1 =document.getElementsByName(comp.name)[1];
if(radio0.checked != "checked && radio1.checked != "checked"){
return false;
}
}
}
return true;

}

87,920

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧