首页 > 解决方案 > 如果第一个数字已经是 0,则文本框不应接受多个 0

问题描述

当第一个数字已经是 0 时,文本框接受多个 0

<asp:TemplateColumn>
         <HeaderTemplate>
             Consumed
         </HeaderTemplate>
         <ItemTemplate>
             <asp:TextBox ID="txtConsumed" runat="server" CausesValidation="true"></asp:TextBox>
             <asp:RequiredFieldValidator ID="rfvtxtQty" runat="server" 
                 ControlToValidate="txtConsumed" Display="Dynamic" ErrorMessage="*Required" 
                 ValidationGroup="Val_Packages" />
             <ajaxToolkit:FilteredTextBoxExtender ID="FilteredTextBoxExtender27" runat="server" TargetControlID="txtConsumed"
 FilterType="Numbers" Enabled="True" />
             <br />
         </ItemTemplate>
     </asp:TemplateColumn>

当我多次按 0 时,我需要文本框只显示 1 个“0”。

标签: htmlvb.net

解决方案


您可以使用以下代码。KeyPress 事件触发不允许任何非数字字符的代码,而 KeyUp 事件触发删除除一个前导零之外的所有字符的代码。当您按要求输入文本时,它将起作用。

Private Sub TextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyUp
    If Mid(TextBox1.Text, 1, 1) = "0" Then
        If Mid(TextBox1.Text, 2, 1) = "0" Then
            TextBox1.Text = Mid(TextBox1.Text, 2, Len(TextBox1.Text) - 1)
        Else
        End If
    Else
    End If
    TextBox1.SelectionStart = Len(TextBox1.Text) + 1
End Sub

Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
    e.Handled = Not (Char.IsDigit(e.KeyChar) Or Char.IsControl(e.KeyChar))
End Sub

推荐阅读