【问题标题】:Asp:RadioButtonList still posts back to server even when client validation fails?即使客户端验证失败,Asp:RadioButtonList 仍会回发到服务器?
【发布时间】:2008-11-04 11:10:37
【问题描述】:

这个查询与我昨天问的一个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 验证按预期运行。 将显示一条消息,我希望保留在页面上,直到用户保存更改,而不是页面被回发,实际上我正在丢失未保存的更改。

可能出了什么问题?

【问题讨论】:

    标签: javascript asp.net input dom-events


    【解决方案1】:

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

    这是解决方法:

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

    【讨论】:

      【解决方案2】:

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

      您需要拦截该 PostBack 进程并在它发布表单客户端之前停止它。最好的方法是使用CustomValidator,特别是“ClientValidationFunction”属性。这将允许您的 JavaScript 发出信号,表明不应由于验证错误而发生回发。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-20
        • 2014-09-30
        相关资源
        最近更新 更多