单选按钮列表中点击“确认”后页面不会重新加载

3
我有一个包含2个选项的RadioButtonList。我希望在选择任何一个选项时进行回发。我已经为RadioButtonList中的一个选项添加了确认框。但是,当我在确认框中点击“确定”时,没有回发并且SelectedIndexChanged事件不会触发。
RadioButtonList的AutoPostback属性设置为true。 这是我的Page_Load方法中的代码片段:
RadioButtonOpenRestricted.Attributes.Add("AutoPostBack", "True");
RadioButtonOpenRestricted.Items.FindByValue("Open Access").Attributes.Add("AutoPostBack", "True");
RadioButtonOpenRestricted.Items.FindByValue("Open Access").Attributes.Add("OnClick", "javascript:return confirm('Are you sure?');");

之前,我为整个RadioButtonList添加了confirm box,并且postback的效果也符合预期。但是我希望只有用户点击“Open Access”时才显示确认框。

请帮忙!


我尝试了一些东西。 新代码行如下:

RadioButtonOpenRestricted.Items.FindByValue("Open Access").Attributes.Add("OnClick", "javascript:showConfirmBox(0,'" + RadioButtonOpenRestricted.ClientID + "')"); RadioButtonOpenRestricted.Items.FindByValue("Restricted Access").Attributes.Add("OnClick", "javascript:showConfirmBox(1,'" + RadioButtonOpenRestricted.ClientID + "')");

JavaScript方法如下:

这段代码的问题在于它将OK和Cancel视为相同。 确认框会显示,但是JavaScript方法的if-else部分没有被调用。 我尝试使用OnClientClick...这甚至不会显示确认框。

救命啊!!!


1
如果您正在使用C#,请添加另一个标签C#。 - user710502
3个回答

1
这是因为您的单击脚本与由ASP.NET生成的自动提交脚本不兼容。一个快速的hack解决方案可以是:
RadioButtonOpenRestricted.AutoPostBack = true;
RadioButtonOpenRestricted.Items.FindByValue("Open Access").Attributes.Add("OnClick", "if (!confirm('Are you sure?')) return false;");

虽然如此,当您在确认框上取消时,这仍会给您带来问题(在这种情况下,您必须添加脚本以再次选择前一个单选按钮)。

因此,我不是单选按钮列表的忠实粉丝 - 您可以考虑使用具有项目模板中单选按钮的重复器的替代机制,并为确认编写自己的JavaScript。


0

我认为您想使用OnClientClick来显示一个“确认”窗口。

我认为您不能让JavaScript确认窗口执行回发,至少不是按照您的代码设置的方式。

您应该将OnClientClick设置为显示带有<asp:Button/>的确认模态或窗口,并使该按钮执行您要查找的回发。


我在我的代码中有以下行: RadioButtonOpenRestricted.Attributes.Add("OnClick", "javascript:return confirm('您确定要为此文档提供公开访问权限吗?所有现有许可将被删除!');");当发生回发时。只是当我将其更改为添加到RadioButtonList的特定项时,回发停止工作了。 - KhD
以上发布的解决方案是正确的。如果您正在服务器端设置属性,则需要使用OnClientClick。 - TheITGuy
我尝试将“OnClick”更改为“OnClientClick”。现在确认框根本不显示。如果我只是添加下面这行代码,那么在确认框的OK按钮上双击后会发生回传: RadioButtonOpenRestricted.Attributes.Add("OnClick", "javascript:return confirm('Are you sure');"); - KhD

0

Khushboo,我以前也经常遇到这种情况。原因是我在aspx页面中某个地方漏掉了一些闭合标签。我通常会将整个aspx页面复制到其他文本编辑器中,并逐个粘贴所有元素到我的aspx页面中。这总是解决了我的问题。我相信你可能也漏掉了一些闭合标签,请仔细检查所有元素。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接