如何把多个单选按钮组中每组被选中项的value值写到文本框中?

zibinghy 2009-04-03 10:48:15
要实现的效果如图:



其中的容量、样式等两组单选按钮组是由程序生产的,这样按钮组和每组单选按钮的数量是不定的。

请问怎么才能做到把已经被选中的每组中的单选按钮的value值都写到一个text文本框中,各个value值用“,”隔开?

我现在用的代码只能取到最后一组被选中的单选按钮的value值。

程序代码如下(含asp和JavaScript):


<table>
<form name="form1">
<%
set rs=server.CreateObject("adodb.recordset")
rs.open "select * from confine where class="&bclass,conn,1,1
do while not rs.eof
response.Write "<tr>"
response.Write "<td class=""TableRow2"">"
response.Write rs("confine")&":"
response.Write "</td>"

set rss=server.CreateObject("adodb.recordset")
rss.open "select * from confine_value where confine="&rs("id"),conn,1,1
response.Write "<td class=""TableRow2"">"
do while not rss.eof
response.Write "<label><input type=""radio"" name="""&rs("confine")&""" value="""&rss("id")&""">"&rss("value")&"</label> "
aa=rs("confine")
rss.movenext
loop
response.Write "</td>"
rss.close
set rss=nothing

response.Write "</tr>"
rs.movenext
loop
'rs.close
'set rs=nothing
'
'conn.close
'set conn=nothing
%>
<input type="button" name="btnSon" id="btnSon" value="提交" onClick="setValue();" />
</form>
</table>



<script type="text/javascript">
//此方法用于向其父文本框类赋值
function setValue(){


for(j=0;j<<%=rs.recordcount%>;j++){



for(i=0;i<document.form1.<%=aa%>.length;i++)
{
if(document.form1.<%=aa%>[i].checked)
{
var sonValue=document.form1.<%=aa%>[i].value;
//alert("您选择的是:"+document.form1.txtSon[i].value);
}
}


}

//向父类文本框赋值
parent.document.form1.txtFather.value=sonValue;
}
</script>
...全文
724 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zibinghy 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 Free_Wind22 的回复:]
你aa每次都是一样的,肯定得到的是最后一组的数据.搞个数组保存起来
[/Quote]
最怕的就是数组了!尤其还把asp和JavaScript都涉及到了。给做个例子吧。
2009-04-03
  • 打赏
  • 举报
回复
你aa每次都是一样的,肯定得到的是最后一组的数据.搞个数组保存起来
zibinghy 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cntmi 的回复:]
你直接给每个radio加个onclick
[/Quote]

??
cntmi 2009-04-03
  • 打赏
  • 举报
回复
你直接给每个radio加个onclick
zibinghy 2009-04-03
  • 打赏
  • 举报
回复
会不会是“aa”的问题?前面程序里aa=rs("confine")和js中document.form1. <%=aa%>会不会不同步呢?
zibinghy 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 Free_Wind22 的回复:]
你变量aa的内容是什么样的?
[/Quote]

“aa”是由程序生产的,获取的是每个单选按钮的name值,aa=rs("confine")。例如:第一组单选按钮,<input type="radio" name="容量" value="" />。每个按钮的name值都是“容量”,这个“容量”就是程序生产的。
2009-04-03
  • 打赏
  • 举报
回复
你变量aa的内容是什么样的?
zibinghy 2009-04-03
  • 打赏
  • 举报
回复
谢谢mumu_java

我刚用你的js试了下,还是有问题:只有选择最后一组的单选按钮值才能传过来,其他组选了没反应。
mumu_java 2009-04-03
  • 打赏
  • 举报
回复

function setValue(){


for(j=0;j<<%=rs.recordcount%>;j++){

var sonValue = '';

for(i=0;i<document.form1.<%=aa%>.length;i++)
{
if(document.form1.<%=aa%>[i].checked)
{
sonValue += document.form1.<%=aa%>[i].value+',';
//alert("您选择的是:"+document.form1.txtSon[i].value);
}
}


}

//向父类文本框赋值
parent.document.form1.txtFather.value=sonValue.substring(0,sonValue.length-1);
}

zibinghy 2009-04-03
  • 打赏
  • 举报
回复
Free_Wind22,在麻烦问一下,如果我把单选按钮换成复选框的话,这样取回来的值都是用“,”分开的,怎么能把不同组的值区分开呢?比如说第一组的值为1,2,3;第二组的值为4,5,我想让程序输出这样的结果1,2,3;4,5。这样就可以把不同组的值取出来了,请问怎么实现?
zibinghy 2009-04-03
  • 打赏
  • 举报
回复
明白了,谢谢Free_Wind22指点。
2009-04-03
  • 打赏
  • 举报
回复
文档加载完成后,你再用document.write 会把当前文档清空,所以输出后,JS代码也没了,就不会执行下去了


<script type="text/javascript">
//此方法用于向其父文本框类赋值
function setValue(){

var RadioGroupName;
var t;
var flag;
var result = [];

for(j=0;j<<%=rs.recordcount%>;j++){

t="t"+j;
RadioGroupName=document.getElementsByName(t)
for(var i=0;i<RadioGroupName.length;i++)
{
if(RadioGroupName[i].checked)
{
result.push(RadioGroupName[i].value);

}
}


}
var sonValue = result.join(",");
document.write (sonValue)
alert("您选择的是:"+sonValue);
//向父类文本框赋值
//parent.document.form1.txtFather.value=sonValue;
}
</script>
zibinghy 2009-04-03
  • 打赏
  • 举报
回复
我把程序和JavaScript改进了一下,让单选按钮的name值和程序无关,这样就解决了前面的“aa”问题。现在是,如果运行下面的程序,会分两次弹出对话框,分别提示我选择的两组单选按钮的值,但为什么我用“document.write (sonValue)”输出的时候,就只能输出第一组选中的值呢?请大家帮忙看看那不对。现在可以肯定是几组单选按钮的值都可以取到,但只是输出有问题。

代码如下:


<script type="text/javascript">
//此方法用于向其父文本框类赋值
function setValue(){

var RadioGroupName;
var t;
var flag;


for(j=0;j<<%=rs.recordcount%>;j++){


t="t"+j;
RadioGroupName=document.getElementsByName(t)
for(var i=0;i<RadioGroupName.length;i++)
{
if(RadioGroupName[i].checked)
{
var sonValue=RadioGroupName[i].value;
//document.write (sonValue)
alert("您选择的是:"+sonValue);
}
}


}

//向父类文本框赋值
//parent.document.form1.txtFather.value=sonValue;
}
</script>

87,907

社区成员

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

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