使用radio的一个疑惑

chn_element 2008-07-26 10:04:08
我用radio控件进行批量修改,一页有10个name=“rad”的单选框。现在就有一个问题,就是我没有选择的时候点“修改”会报错,于是我就加了一段javascript来控制,使之没有选择的时候出现一个提示信息,请看代码:
<script>
function fun(){
var length;
var flag ;
length=document.form1.rad.length
for(i=0;i<length;i++){
b=document.form1.rad[i].checked
if(b)
document.form1.action="edit.jsp";
else
alert("请选择修改");
}
}
</script>
下面的修改按钮是这样的:<input type="submit" value="修改" onclick="fun();">
当我选择了之后要按9次“请选择修改”才能进入edit.jsp,要是我不选,就要点10次请选择修改,这都好理解,是遍历的问题。因为length=10,
于是我把alert放在了外面:
<script>
function fun(){
var length;
var flag ;
length=document.form1.rad.length
for(i=0;i<length;i++){
b=document.form1.rad[i].checked
if(b)
document.form1.action="edit.jsp";
}
alert("请选择修改");
}
</script>
现在的是问题是:我什么都不选,你点“修改”会有提示,我选择了,还是要点alert弹出的对话框才能进入edit.jsp页面,难道alert优先级跟页面跳转有什么内在联系?为什么总是先执行alert了再跳转呢??那应该怎么修改呢??
...全文
106 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
snowtscx 2008-07-26
  • 打赏
  • 举报
回复
<script>
function fun(){
var length;
var flag ;
length=document.form1.rad.length
for(i=0;i <length;i++){
b=document.form1.rad[i].checked
if(b==false)
flag=1;
}
if(flag==1){
alert("请选择修改");
}else{
document.form1.action="edit.jsp";
}
}
</script>

沒測試過,你試試
nicholsky 2008-07-26
  • 打赏
  • 举报
回复
没有提供完整点的测试代码,只能说你的修改按钮应该改为<input type="submit" value="修改" onclick="return fun()">,然后fun函数里面当没选择时用return false;正确时return true;不用document.form1.action="edit.jsp";这样了
leosming 2008-07-26
  • 打赏
  • 举报
回复
<script>
function fun(){
var length;
var flag ;
length=document.form1.rad.length
for(i=0;i <length;i++){
b=document.form1.rad[i].checked
if(b)
document.form1.action="edit.jsp";
return true;
}
alert("请选择修改");
return false;
}
</script>

修改一下
lovewds2002 2008-07-26
  • 打赏
  • 举报
回复

<script>
function fun(){
var len = document.form1.rad.length ;
var flag = 0;
for(i=0;i <len;i++)
{
if(document.form1.rad[i].checked){
flag++;
}
}
if(flag>0){
document.form1.action="edit.jsp";
document.form1.submit();
}else{
alert("请选择修改");
}
}
</script>
nicholsky 2008-07-26
  • 打赏
  • 举报
回复
晕,又发现自己多余了。对不起,哈哈。
nicholsky 2008-07-26
  • 打赏
  • 举报
回复
楼主又不提供代码,晕。

<form name="form1">
<input name="rad" type="radio">
<input name="rad" type="radio">
<input name="rad" type="radio">
<input name="rad" type="radio">
<input type="submit" value="修改" onclick="return fun();">
</form>
<script>
function fun(){
document.form1.action="edit.jsp";
for(var i=0; i<document.form1.rad.length; i++){
if(document.form1.rad[i].checked)return true;
}
return !!alert("请选择修改");
}
</script>
HonorsOffice 2008-07-26
  • 打赏
  • 举报
回复
不好意思,前面回答的太卤莽了。
再贴一下解决方案,你可以参考一下:

<script type="text/jscript">
function readySubmit(){
var radios=document.getElementsByName("rdo");
for(var iLen=radios.length,i=0;i<iLen;i++){
if(radios[i].checked) return true;
}
alert("您当前没有做出选择");
return false;
}
</script>


<form action="redirect_page.htm">
<input type="radio" name="rdo">a
<input type="radio" name="rdo">b
<input type="radio" name="rdo">c
<input type="radio" name="rdo">d
<input type="radio" name="rdo">e
<input type="radio" name="rdo">f
<input type="radio" name="rdo">g
<input type="radio" name="rdo">h
<input type="radio" name="rdo">i
<input type="radio" name="rdo">j
<input type="submit" value="提 交" onclick="return readySubmit();">
</form>
leosming 2008-07-26
  • 打赏
  • 举报
回复
<script>
function fun(){
var length;
var flag ;
length=document.form1.rad.length
for(i=0;i <length;i++){
b=document.form1.rad[i].checked
if(b)
document.form1.action="edit.jsp";
}
alert("请选择修改");
return false;
}
</script>

修改一下
chn_element 2008-07-26
  • 打赏
  • 举报
回复

终于搞出来了,还是要设置标志位:
function fun(){
var length;
var flag1=0;
length=document.form1.rad.length
for(i=0;i<length;i++){
b=document.form1.rad[i].checked;
if(b)
flag1=1;
}
if(flag1==1)
document.form1.action="edit.jsp";
else
alert("请选择你要修改的内容!");
}

至于我之前提的那个为什么是错的,还是不清楚。希望大虾来指教。。。
HonorsOffice 2008-07-26
  • 打赏
  • 举报
回复
先执行完客户端代码,然后去执行服务器端代码(submit).加个返回即可(return false)。
<input type="submit" value="修改" onclick="fun();return false;">
chn_element 2008-07-26
  • 打赏
  • 举报
回复
不用document.form1.action="edit.jsp";1楼说不用这个我怎么跳转到修改页面呢??
2楼一看就是错的啊,要是不选择最后一个的话,flag是始终为1的。那就意味着每次都会弹出对话框。

87,910

社区成员

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

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