单选按钮循环判断问题

dusz 2012-02-20 02:09:30
function read()
{
var button=document.getElementsByName("d1");
for(var i=0;i<button.length;i++)
{
if(button[i].checked==false)
{
var p=document.getElementById("a3");
p.value="请选择性别";
return false;

}
else{
p.value="";

return true;

}
}

}



第一个值男被选中可以提交
第二个值 女被选中就不能提交
...全文
302 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
寒似火 2012-02-24
  • 打赏
  • 举报
回复
楼主 肿么不结贴?
dusz 2012-02-21
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 xph0916 的回复:]

JScript code

function read()
{
var button=document.getElementsByName("d1");
for(var i=0;i<button.length;i++)
{
if(button[i].checked==false)
{
var p=document.getElementById("a3");
p.value="请选择性别";
r……
[/Quote]
正解
寒似火 2012-02-21
  • 打赏
  • 举报
回复

function read()
{
var button=document.getElementsByName("d1");
for(var i=0;i<button.length;i++)
{
if(button[i].checked==false)
{
var p=document.getElementById("a3");
p.value="请选择性别";
return false;

}
else{
p.value="";

return true;

}
}

}


for(var i=0;i<button.length;i++)
{
if(button[i].checked==false)//这里明显有逻辑问题(你第一个“男”没选中就直接返回false跳出了)
{
var p=document.getElementById("a3");
p.value="请选择性别";
return false;
}
else{p.value="";return true;}

//改成:
function read()
{
var reValue=false;//定个变量
var button=document.getElementsByName("d1");
var p=document.getElementById("a3");
for(var i=0;i<button.length;i++)
{
if(button[i].checked==true){reValue = true;break;}//如果有选中的就reValue为true 跳出循环
}
//再进行判断
if(reValue){p.value="";return reValue;}else{p.value="请选择性别";return reValue;}
}
linbooooo1987 2012-02-20
  • 打赏
  • 举报
回复
function read()
{
var button=document.getElementsByName("d1");
if(button[0].checked == false){
var p=document.getElementById("a3");
p.value="请选择性别";
return false;
}else{
return true;
}
}
三石-gary 2012-02-20
  • 打赏
  • 举报
回复
for (var i = 0; i < button.length; i++) {
if (button[i].checked == false) {

p.value = "请选择性别";

}
else {

p.value = "";

return true;
}

}
return false;

}
在for 外面加个return false;
里面那个去掉。。再试下
huhao421 2012-02-20
  • 打赏
  • 举报
回复
在for里面判断a[i].checked == false,选择女和不选的情况下,a[0].checked肯定是false。
dusz 2012-02-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ywtywt337 的回复:]

代码改成这样
JScript code

function read(){
if(document.getElementsByName("d1")[0].checked==false)
{
var p=document.getElementById("a3");
p.value="请选择性别";
return false;
}
return true;
}
[/Quote]



这个不管用啊 。。。
huhao421 2012-02-20
  • 打赏
  • 举报
回复
var button=document.getElementsByName("d1");

var p=document.getElementById("a3");
var flag = false;
for(var i=0;i<button.length;i++)
{
if(button[i].checked)
{
flag = true;
p.value="";
return true;
}
}
if(!flag)
{
p.value="请选择性别";
return false;
}
dusz 2012-02-20
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 zsx841021 的回复:]

哦知道了。。需要你自己再去写判断啊。。
else{
p.value = "";

return true;

}
在这里面写。。当是女的就return false..男的就 p.value = "";

return true;……
[/Quote]


我这个的意思是两个单选按钮选中一个就能提交
可是我写出来之后只能选男的才能提交 选女的给提示不能提交 怎么改成选女也可以提交
dusz 2012-02-20
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 zsx841021 的回复:]

哦知道了。。需要你自己再去写判断啊。。
else{
p.value = "";

return true;

}
在这里面写。。当是女的就return false..男的就 p.value = "";

return true;……
[/Quote]



已经搞糊涂了 。。。求写全、、、、
三石-gary 2012-02-20
  • 打赏
  • 举报
回复
哦知道了。。需要你自己再去写判断啊。。
else{
p.value = "";

return true;

}
在这里面写。。当是女的就return false..男的就 p.value = "";

return true;
dusz 2012-02-20
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 zsx841021 的回复:]

JScript code
<script type="text/javascript">
function show() {
var name = document.getElementById("name");
var name1 = name.value;
if (name1 == "") {

……
[/Quote]



额。。。完全不管用。。。。
三石-gary 2012-02-20
  • 打赏
  • 举报
回复
<script type="text/javascript">
function show() {
var name = document.getElementById("name");
var name1 = name.value;
if (name1 == "") {

var p = document.getElementById("name2");
p.value = "用户名不能为空";



return false;

}
var pass = document.getElementById("pass");
var word = pass.value;
if (word == "") {
var p = document.getElementById("a2");

p.value = "密码不能为空";

return false;
} else if (!(word.length >= 6 && word.length <= 12)) {
var p = document.getElementById("a2");

p.value = "密码长度必须是6到12之间";

return false;
}

var a = document.getElementsByName("d1");
var p = document.getElementById("a3");
for (var i = 0; i < a.length; i++) {
if (a[i].checked == false) {

p.value = "请选择性别";
return false;

}
else{
p.value = "";

return true;

}
}
}


</script>

我直接给你整合在了show()方法里
dusz 2012-02-20
  • 打赏
  • 举报
回复
不管用。。。。
dusz 2012-02-20
  • 打赏
  • 举报
回复
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>第三题</title>
<style type="text/css">
.s1{
float:right;
}
.a1{
border-style:none;
}
</style>
<script type="text/javascript">
function show()
{
return (read());
}
function ming()
{
var name=document.getElementById("name");
var name1=name.value;
if(name1=="")
{

var p=document.getElementById("name2");
p.value="用户名不能为空";



return false;
}
}
function pas()
{
var pass=document.getElementById("pass");
var word=pass.value;
if(word=="")
{
var p=document.getElementById("a2");

p.value="密码不能为空";

return false;
}else if(!(word.length>=6&&word.length<=12))
{
var p=document.getElementById("a2");

p.value="密码长度必须是6到12之间";

return false;
}
else{
return true;
}
}
function read()
{

var button=document.getElementsByName("d1");
var p=document.getElementById("a3");
for(var i=0;i<button.length;i++)
{
if(button[i].checked==false)
{

p.value="请选择性别";
return false;

}else
{

p.value="";

return true;
}

}


}
</script>

</head>

<body>
<form method="post" action="#" onsubmit="return show()">
<table width="489" border="1">
<tr>
<td width="112" align="right">用户名:</td>
<td width="367"><label for="textfield"></label>
<input type="text" name="textfield" id="name" onblur="ming()"/>

<label for="textfield2">
<input type="text" name="name" id="name2" class="a1"/>
</label></td>
</tr>
<tr>
<td align="right">密码:</td>
<td><input type="password" name="textfield3" id="pass" onblur="pas()"/>
<input type="text" name="name" id="a2" class="a1"/>
</td>
</tr>
<tr>
<td align="right">性别:</td>
<td><input type="radio" name="d1" value="男" />

<input type="radio" name="d1" value="女" />


<input type="text" name="name" id="a3" class="a1"/>
</td>
</tr>
<tr>
<td align="right">出生日期:</td>
<td><input type="text" name="textfield6" id="textfield6" /></td>
</tr>
<tr>
<td align="right">电子邮箱地址:</td>
<td><input type="text" name="textfield7" id="textfield7" /></td>
</tr>
<tr>
<td height="23" colspan="2" align="center"><input type="submit" name="button2" id="button2" value="注册" /> <input type="button" name="button" id="button" value="清除" /></td>
</tr>
</table>

</form>
</body>
</html>
三石-gary 2012-02-20
  • 打赏
  • 举报
回复
var p=document.getElementById("a3");应该把这样的放在循环外面。。。
leefwu 2012-02-20
  • 打赏
  • 举报
回复
var p=document.getElementById("a3");放到for循环的外面
ywtywt337 2012-02-20
  • 打赏
  • 举报
回复
代码改成这样

function read(){
if(document.getElementsByName("d1")[0].checked==false)
{
var p=document.getElementById("a3");
p.value="请选择性别";
return false;
}
return true;
}
dusz 2012-02-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zsx841021 的回复:]

你怎么触发read()方法的
[/Quote]
我觉得是for循环判断思路有问题
dusz 2012-02-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zsx841021 的回复:]

你怎么触发read()方法的
[/Quote]
<form method="post" action="#" onsubmit="return show()">
加载更多回复(6)

87,990

社区成员

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

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