使用正则表达式验证器清除文本框

时间:2013-05-24 09:07:07

标签: asp.net regex vb.net validation textbox

我有一个带有正则表达式验证器的文本框,用于验证我的文本框是否为数字。

这是代码:

<asp:TextBox ID="txtAmount" runat="server" CssClass="TextBoxCls"></asp:TextBox>
<asp:RegularExpressionValidator runat="server" ID="valNumbersOnly" ControlToValidate="txtAmount"
                            SetFocusOnError="true" Display="Dynamic" ErrorMessage="Please enter a numbers only in text box."
                            Font-Bold="true" ForeColor="Red" ValidationExpression="(^([0-9 ]*|\d*\d{1}?\d*)$)">
                        </asp:RegularExpressionValidator>

并且,如果用户意外输入了错误的数据,它将显示错误:这样:

Error

我向用户提供了一个清除所有文本框的清晰功能:使用此功能:

 Public Sub ClearTextBox(ByVal root As Control)
        For Each ctrl As Control In root.Controls
            ClearTextBox(ctrl)
            If TypeOf ctrl Is TextBox Then
                CType(ctrl, TextBox).Text = String.Empty
            End If
        Next ctrl
    End Sub


    Protected Sub btnClr_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnClr.Click

        ClearTextBox(Me)
        dropResponse.SelectedIndex = 0
        FillData()

    End Sub

但是,金额未清除,仍显示错误。为什么还会发生?

2 个答案:

答案 0 :(得分:1)

如果您通过同一表单上的另一个按钮提供此功能,则不会遇到代码隐藏。

如果您想要验证表单上的按钮需要触发,而不管其他控件是否已经过验证,请将其放在单独的验证组中:

<asp:Button runat="server" ID="btnClr" Text="Clear form" OnClick="btnClr_Click" ValidationGroup="unvalidatedControls" />

或者,在需要验证的控件上放置验证组,并在提交表单的按钮上放置:

<asp:TextBox ID="txtAmount" runat="server" CssClass="TextBoxCls" ValidationGroup="validatedControls"></asp:TextBox>
<asp:RegularExpressionValidator runat="server" ID="valNumbersOnly" ControlToValidate="txtAmount"
                            SetFocusOnError="true" Display="Dynamic" ErrorMessage="Please enter a numbers only in text box."
                            Font-Bold="true" ForeColor="Red" ValidationExpression="(^([0-9 ]*|\d*\d{1}?\d*)$)"
                            ValidationGroup="validatedControls">
                        </asp:RegularExpressionValidator>

<asp:Button runat="server" ID="btnSubmit" Text="Submit Form" ValidationGroup="validatedControls" />

您可以在清除按钮和主窗体上添加ValidationGroup属性,只要它们不同,清除按钮就可以正常工作。

有关验证组的一些文档:http://msdn.microsoft.com/en-us/library/ms227424.aspx

答案 1 :(得分:0)

我怀疑文本框包含在面板或其他容器控件中。页面的控件集合中只有页面的顶层控件可用。

我建议使用正确的容器控件更改ClearTextBox调用的参数。