Asp:即使客户端验证失败,RadioButtonList仍会回发到服务器?

时间:2008-11-04 11:10:38

标签: asp.net javascript-events input

此查询与我昨天问过的this相关。 我的asp.net页面上有一个单选按钮列表,定义如下:

<asp:RadioButtonList ID="rdlSortBy" runat="server" RepeatDirection="Horizontal" RepeatLayout="Flow" AutoPostBack="True" >
       <asp:ListItem Selected="True">Name</asp:ListItem>
        <asp:ListItem>Staff No</asp:ListItem>
</asp:RadioButtonList>

在客户端,我正在进行以下验证:

rdlSortBy.Attributes("onclick") = "javascript:return prepareSave() && prepareSearch();"

问题是Javascript验证按预期运行。 将显示一条消息,我希望在用户保存更改之前保留在页面上,而不是回发页面,实际上我将丢失未保存的更改。

可能出现什么问题?

2 个答案:

答案 0 :(得分:2)

我解决了这个问题,问题是我将RadioButtonList的“onclick”附加到单个单选按钮上。

这是修复:

rdlSortBy.Items(0).Attributes("onclick") = "javascript:return isDirtied() && prepareSearch();"
    rdlSortBy.Items(1).Attributes("onclick") = "javascript:return isDirtied() && prepareSearch();"

答案 1 :(得分:1)

正在运行用于“验证”的OnClick代码,然后运行控件本身注入的表单的代码正在运行。

你需要拦截PostBack进程并在发布客户端表单之前将其停止。执行此操作的最佳方法是使用CustomValidator,特别是“ClientValidationFunction”属性。这将允许您的JavaScript发出由于验证错误而不应发回的信息。