2015-04-27 60 views
0

我需要幫助來限制我的文本框只接受數字。我有另一個文本框事件textchanged,在這種情況下,我想不允許用戶編寫除數字之外的其他字符。已經實現了最大長度,但是我無法驗證只允許數字。 這裏是我的病情,我想實現:使用vb.net驗證文本框web forma

Protected Sub txtIdType_TextChanged(sender As Object, e As EventArgs) 
     Dim txtb As TextBox = CType(FormViewPerson.FindControl("txtIdType"), TextBox) 
     Dim txtb1 As TextBox = CType(FormViewPerson.FindControl("TextBoxIDCode"), TextBox) 

     If (txtb.Text = "Leternjoftimi" OrElse txtb.Text = "KosovoIDCard" OrElse txtb.Text = "Licna karta") Then 
      txtb1.MaxLength = 10 
     End If 
End Sub 

回答

2

爲此,您可以簡單地aspx page,如下圖所示: -

<asp:TextBox ID="txtNumbers" runat="server" autocomplete="off" ValidationGroup="AddNew"></asp:TextBox> 
<asp:RegularExpressionValidator ID="regNumbers" runat="server" ErrorMessage="Only numbers are allowed" ControlToValidate="txtNumbers" ValidationExpression="^[0-9]*$" ValidationGroup="AddNew"></asp:RegularExpressionValidator> 

你並不需要使用code-behind這一點。 希望這會有所幫助

+0

我只需要當txtb.Text = 「Leternjoftimi」 txtb1寫只是數字並不適用於所有類型的 – user2568960

+0

總會'txtb.Text' =' Leternjoftimi'和你只能寫數字的地方。請清楚地說明你的疑惑。正如你的問題,你只需要文本框只允許數字。 – BNN

+0

對於這種情況是(txtb.Text =「Leternjoftimi」)我想另一個文本框是最大長度= 10,不允許寫入其他字符比 – user2568960

1

您可以從後面的代碼添加驗證器。儘量做到以下幾點:

Protected Sub txtIdType_TextChanged(sender As Object, e As EventArgs) 
      Dim txtb As TextBox = CType(FormViewPerson.FindControl("txtIdType"), TextBox) 
      Dim txtb1 As TextBox = CType(FormViewPerson.FindControl("TextBoxIDCode"), TextBox) 

      If (txtb.Text = "Leternjoftimi" OrElse txtb.Text = "KosovoIDCard" OrElse txtb.Text = "Licna karta") Then 

      txtb1.MaxLength = 10 
      Dim validator As New RegularExpressionValidator() 
      validator.ID = "validator" + New Random().[Next](100, 1000) 
      validator.ControlToValidate = CType(FormViewPerson.FindControl("TextBoxIDCode"), TextBox).ID 
      validator.ValidationExpression="^[0-9]*$"  
      FormViewPerson.Controls.Add(validator) 

      End If 

     End Sub 

Suksese!

+0

我試過這個,但它不工作,它不驗證:s – user2568960

+0

你可以在瀏覽器中檢查是否存在帶有包含「驗證器」字的某個ID的跨度? – enb081

+0

嗯,不,它不是 – user2568960

1

我使用這個功能解決了我的問題:

For Each ch As Char In txt.Text 
       If Not Char.IsDigit(ch) Then 
        txt.Text = "" 
        Exit Sub 
       End If 
      Next