如何触发RegularExpressionValidator的客户端验证?

时间:2013-02-21 09:57:47

标签: c# asp.net

我在我的ASP.NET表单中使用RegularExpressionValidators作为输入文本框。

GUI看起来像。所有项目都是服务器控件,在离开文本框时,如果输入无效,我会显示错误消息。

我已使用RegularExpressionValidator中的EnableClientScript启用了客户端验证。一旦我离开文本框,它会立即触发验证器。但是,在单击任何按钮(导致生成回发)时,将从屏幕中删除正则表达式验证器错误显示。如何重新触发客户端验证?

我是asp.net的新手

---------------------------
|                         | * Invalid input
---------------------------

Listbox A           Listbox B
------------       ------------
|          |       |          |
|          |       |          |
|          |   >>  |          |
|          |       |          |
|          |       |          |
------------       ------------

代码就是这样。

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <asp:TextBox ID="nameBox" runat="server" CssClass="StandardTextBox" Width="297px"
        EnableViewState="true"></asp:TextBox>
    <asp:RegularExpressionValidator ID="regExpValidatorRuleName2" align="left" runat="server"
        ControlToValidate="nameBox" 
        Width="10px" Height="10px" 
        CssClass="StandardErrorLabel"
        Display="Dynamic" 
        ErrorMessage="Input has Invalid character(s). Valid characters are a-z, A-Z, 0-9, _, @, ., -"
        ValidationGroup="EditingPanel" 
        ValidationExpression="^[a-zA-Z0-9_@.-]*$" 
        ToolTip="Input has Invalid character(s). Valid characters are a-z, A-Z, 0-9, _, @, ., -">*</asp:RegularExpressionValidator>
    <asp:Panel ID="criteriaPanel1" GroupingText="Test" runat="server"
        left="19px" CssClass="InputPanelTableLeft" Width="400px" Height="470px" Font-Bold="True"
        Font-Size="X-Small">
        <table class="InputPanelTable">
            <tr>
                <td align="left">
                    <asp:ListBox ID="listboxA" Rows="10" runat="server" EnableViewState="true"
                        Width="150px" Height="100px"></asp:ListBox>
                </td>
                <td style="padding: 0px 5px 0px 5px" valign="middle">
                    <asp:Button ID="buttonMove" runat="server" OnClick="buttonMove_OnClick"
                        Text="&gt;&gt;" ToolTip="Moves selected item from left side to right" />
                </td>
                <td align="left">
                    <asp:ListBox ID="listboxB" Rows="10" runat="server" EnableViewState="true"
                        Width="150px" Height="100px"></asp:ListBox>
                </td>
            </tr>
        </table>
    </asp:Panel>
</asp:Content>

1 个答案:

答案 0 :(得分:1)

我发现 buttonMove 会在点击它时导致回发。

验证控件的错误消息无法保留回发。

您还没有提到从ListBox A移动到ListBox B的内容。

因此,如果您可以使用JavaScript将元素从ListBox A移动到ListBox B(我的意思是,不要使用服务器端程序),那么您的问题就可以解决了。

如果您有任何问题,请告诉我。