我有3组单选按钮和1组复选框。 如何检查每组单选按钮中是否选中了单选按钮,并且至少选中了一个复选框?如果没有,也许会弹出警报窗口。 那就是:需要从所有三个组中选择一个单选按钮和一个复选框(所有四个都是必需的)。我对此没有运气。感谢
<html>
<head>
<script type="text/javascript">
function DisplayFormValues()
{
var str = '';
var elem = document.getElementById('frmMain').elements;
for(var i = 0; i < elem.length; i++)
{
if(elem[i].checked)
{
str += elem[i].value+"<br>";
}
}
document.getElementById('lblValues').innerHTML = str;
document.frmMain.reset();
}
</script>
</head>
<body>
<form id="frmMain" name="frmMain">
Set 1
<INPUT TYPE="radio" NAME="r1" value="r1a">
<INPUT TYPE="radio" NAME="r1" value="r1b">
<INPUT TYPE="radio" NAME="r1" value="r1c">
<br>
Set 2
<INPUT TYPE="radio" NAME="r2" value="r2a">
<INPUT TYPE="radio" NAME="r2" value="r2b">
<INPUT TYPE="radio" NAME="r2" value="r2c">
<br>
Set 3
<INPUT TYPE="radio" NAME="r3" value="r3a">
<INPUT TYPE="radio" NAME="r3" value="r3b">
<INPUT TYPE="radio" NAME="r3" value="r3c">
<br>
Check 1
<INPUT TYPE="checkbox" NAME="c1" value="c1a">
<INPUT TYPE="checkbox" NAME="c1" value="c1b">
<INPUT TYPE="checkbox" NAME="c1" value="c1c">
<input type="button" value="Test" onclick="DisplayFormValues();" />
</form>
<hr />
<div id="lblValues"></div>
</body>
</html>
答案 0 :(得分:1)
以下是您的功能的修改版本:
function DisplayFormValues() {
var str = '';
var elem = document.getElementById('frmMain').elements;
var groups = { 'r1': 0, 'r2': 0, 'r3':0, 'c1': 0 };
for (var i = 0; i < elem.length; i++){
if (elem[i].checked) {
var n = elem[i].name;
groups[n] += 1
str += elem[i].value + "<br>";
}
}
document.getElementById('lblValues').innerHTML = groups['r1'] + "/" +
groups['r2'] + "/" + groups['r3'] + "/" + groups['c1'];
document.frmMain.reset();
}
在这个函数中,我们计算检查了多少个元素(显然一个元素用于同一组中的单选按钮,但你理解原理并且这是灵活的)并且groups[XXX]
是计数(XXX
是小组名称)。
您可以根据需要调整并根据要求添加警报。
答案 1 :(得分:0)
您可以通过编写大量代码在javascript中执行此操作,或者我强烈建议您使用jquery验证插件。请看这个例子:http://jquery.bassistance.de/validate/demo/radio-checkbox-select-demo.html
您可以执行以下操作:
<input type="radio" validate="required:true" name="family" value="s" id="family_single" class="error">
这将需要至少选择一个选项。
此外,最好在某些内容无效时提供内联反馈。有警报可能真的很烦人。
答案 2 :(得分:0)
var radioCount = 0;
var checkBoxCount = 0;
var currentElement;
for (var i = 0; i < elem.length; ++i) {
currentElement = elem[i];
if (!currentElement.checked)
continue;
if (currentElement.type == "checkbox")
++checkBoxCount;
else if (currentElement.type == "radio")
++radioCount;
}
if (radioCount < 3)
//fail
if (checkBoxCount < 1)
//fail