repeater里面根据两个radiobutton的选择情况,出发确定按钮的confirm事件

linzonghua234 2008-12-01 05:50:39
repeater里面有两个radiobutton按钮,同意和不同意,我想实现的是当是选中同意的时候,点击确定btnok按钮的时候,触发confirm("你确定同意?"),弹出提示,选中不同意时就不触发。

因为是repeater,必须等后台绑定完数据源后,radiobutton按钮才会出现.

我本来尝试在btnok的后台OnClick事件中,判断当同意radiobutton选中的时候,给BtnOK按钮onlick属性加上return confirm属性,但是后台代码先于JS执行,只有等点第二次确定的时候,才会弹出提示。。

后台我直接在前台页面的btnok的onclientclick属性加上代码<%#ConfirmStr(container.itemindex)%>,ConfirmStr方法是后台的方法,因为是 repeater,所以会有多个重复项,也就是等下会有多组radiobutton,所以我得用<%#container.itemindex%>来判断是当前是第几个radiobutton,

((RadioButton(DataListCheck.Items[Convert.ToInt32(itemindex)].FindControl("rdbOk"))).Checked == true来判断,但是后台还没绑定数据源,ConfirmStr已经执行了,导致出错。我想办法让他先不执行,先绑定数据源再执行,也不行。

后台我就想用纯JS执行,因为必须判定当前是第几个控件,所以得在OnclientClick属性加上方法,ConfirmString(<%#container.itemindex%>),ConfirmString是前台funciton,但是加上了

<%#container.itemindex%>这个参数后,这个方法,根本不执行。。。。。

哪位大哥告诉我怎么解决啊,谢谢了
...全文
250 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
linzonghua234 2008-12-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 t88266236 的回复:]
其实也容易啊
你可以定义一个数组controlMapping = new Array();
如果是表格,你可以遍历每一行,找到每行要触发事件的按钮,假如有一行的id叫btnTest,
然后这样赋值controlMapping.push(new Array('btnTest'], ‘该行对应的是的那个radiobutton的id’))

初始化完这个数组后

遍历数组
for( var arr in controlMapping )
{
var btnId = arr[0];
var radioId = arr[1];
var btnTest = document.getElementById('btnT…
[/Quote]


你的思路不错,谢了哦
这是我最后的的代码
function ConfirmStr()
{
var count=document.getElementsByTagName("input").length;
for(var i=0;i<count;i++)
{
var dd = document.getElementsByTagName("input").item(i);
if(dd.type=="radio")
{
if(dd.value=="rdbOk" && dd.checked==true)
{
if(confirm("一旦同意将不能再修改,请确定是否继续?"))
{
return true;
}
else
{
return false;
}
}
}
}
}
linzonghua234 2008-12-02
  • 打赏
  • 举报
回复
OnClientClick='<%# String.Format("return ConfirmStr({0})", (Container.ItemIndex).ToString()) %>'
最后用这个方法终于把参数传进去了
不然用OnClientClick=‘ConfirmString(<%#container.itemindex%>)’不行的
t88266236 2008-12-01
  • 打赏
  • 举报
回复
其实也容易啊
你可以定义一个数组controlMapping = new Array();
如果是表格,你可以遍历每一行,找到每行要触发事件的按钮,假如有一行的id叫btnTest,
然后这样赋值controlMapping.push(new Array('btnTest'], ‘该行对应的是的那个radiobutton的id’))

初始化完这个数组后

遍历数组
for( var arr in controlMapping )
{
var btnId = arr[0];
var radioId = arr[1];
var btnTest = document.getElementById('btnTest');
var oriClickHandler = btnTest.onclick;
btnTest.onclick = function()
{
if( document.getElementById( radioId ).checked )
{
if( !confirm('你同意吗?') )
{
return;
}
}
oriClickHandler();
}

}


只是个大体思路哈
linzonghua234 2008-12-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 t88266236 的回复:]
<html>
<head> </head>
<body>
<input type = "radio" name='rdo' id = "rdo1"/>Yes <input type = "radio" name='rdo' id = "rdo2"/>No
<input type = "button" id= 'btnTest' value = "Test" onclick="alert('test')"/>
<script type = "text/javascript">
var btnTest = document.getElementById('btnTest');
var oriClickHandler = btnTest.onclick;
btnTest.onclick = function()
{
if( document.getElementById(…
[/Quote]有多组,所以我得加上<%#container.itemindex%>这个参数,我就卡再这里
linzonghua234 2008-12-01
  • 打赏
  • 举报
回复
repeater有多组同意/不同意
t88266236 2008-12-01
  • 打赏
  • 举报
回复
<html>
<head></head>
<body>
<input type = "radio" name='rdo' id = "rdo1"/>Yes<input type = "radio" name='rdo' id = "rdo2"/>No
<input type = "button" id= 'btnTest' value = "Test" onclick="alert('test')"/>
<script type = "text/javascript">
var btnTest = document.getElementById('btnTest');
var oriClickHandler = btnTest.onclick;
btnTest.onclick = function()
{
if( document.getElementById( 'rdo1' ).checked )
{
if( !confirm('你同意吗?') )
{
return;
}
}
oriClickHandler();
}
</script>
</body>
</html>
适当修改下应该就可以了
MicroDeviser 2008-12-01
  • 打赏
  • 举报
回复
repeater 中只有一组同意/不同意吗?

用js 找到这个form中所有radiobutton类型的控件,再判断是否选择了

62,269

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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