1

我有一个 RadioButtonList,它的 AutoPostBack 设置为 True 并且正在服务器端处理:

<asp:radiobuttonlist ID="myRBL" OnSelectedIndexChanged="MyRBL_SelectedIndexChanged"
    RepeatDirection="Horizontal" AutoPostBack="True" runat="server">
    <asp:ListItem Selected="True">Choice 1</asp:ListItem>
    <asp:ListItem>Choice 2</asp:ListItem>
</asp:radiobuttonlist>

我想通过添加带有 OnClick 属性的 JavaScript 函数来“逐步增强”这一点。添加 OnClick="myFunction();" 后,在浏览器中禁用 JavaScript 时不再调用服务器端代码。

有没有人解决这个问题(我必须实现 IPostBackEventHandler 还是我错过了什么)?

更新:太平洋时间 2010 年 8 月 26 日下午 4:31

显然,该控件无法在禁用 JavaScript 的情况下提交 ASP.NET。有人对此有详细的解决方案吗?

4

2 回答 2

1

检查用户是否启用了 javascript 的唯一方法是从客户端。

那么最好的选择是在客户端添加该功能,而不是在服务器代码中。jQuery 很好地处理了这个问题,例如:

$(function() {
  $('input[type=radio]').click(myFunction);
});

如果你不使用 jquery,你可以做一个document.getElementById()诸如此类的事情来分配点击处理程序。

这样,如果客户端没有 javascript,则单选按钮完全不受影响。

于 2010-08-26T22:21:05.463 回答
1

AutoPostBack 在单击单选按钮后使用 JavaScript 进行回发。通过设置 onclick 属性,此行为将被覆盖,因此您必须向 click 事件添加额外的事件处理程序。

据我所知,在纯 JavaScript 中没有简单的方法可以做到这一点,所以我建议使用 jQuery:

$('#radioButtonId').click(myFunction);
于 2010-08-26T22:23:44.180 回答