我有一个带有正则表达式验证器的文本框,用于验证我的文本框是否为数字。
这是代码:
<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>
并且,如果用户意外输入了错误的数据,它将显示错误:这样:
我向用户提供了一个清除所有文本框的清晰功能:使用此功能:
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
但是,金额未清除,仍显示错误。为什么还会发生?
答案 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调用的参数。