Tema: Tips and Tricks
Pregunta: ¿Cómo hacer que un textbox permita sólo números?
Respuesta:
Crear una clase de forma que tengamos nuestro propio control que sólo permite números, como se muestra en el código abajo.
Escribimos la función javascript para permitir sólo números en el cliente mediante la clase stringbuilder. Esto lo hacemos
en el método Render del TextBox, donde también llamamos a dicha función en el onkeypress del TextBox.
Nota: funciona solamente con IE.
En VB.Net
Cita: Public Class TextBoxNumerico
Inherits System.Web.UI.WebControls.TextBox
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
Dim Script As New System.Text.StringBuilder
Script.Append(vbCrLf & "<script language=" & Chr(34) & "javascript" & Chr(34) & ">" & vbCrLf)
Script.Append("function solonumeros(){" & vbCrLf)
Script.Append("var tecla = window.event.keyCode;" & vbCrLf)
Script.Append("if (tecla < 48 || tecla > 57){" & vbCrLf)
Script.Append("window.event.keyCode=0;}}" & vbCrLf)
Script.Append("</script>")
Page.RegisterStartupScript("SoloNumero", Script.ToString)
Attributes.Add("onkeypress", "solonumeros();")
MyBase.Render(writer)
End Sub
End Class
Versión para IE, Netscape y Firefox:
En VB.Net
Cita: Public Class TextBoxNumerico
Inherits System.Web.UI.WebControls.TextBox
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
Dim Script As New System.Text.StringBuilder
Script.Append(vbCrLf & "<script language=" & Chr(34) & "javascript" & Chr(34) & ">" & vbCrLf)
Script.Append("function solonumeros(e){" & vbCrLf)
Script.Append("key = (document.all) ? e.keyCode : e.which;" & vbCrLf)
Script.Append("if (key==8) return true;" & vbCrLf)
Script.Append("patron =/\d/;" & vbCrLf)
Script.Append("te = String.fromCharCode(key);" & vbCrLf)
Script.Append("return patron.test(te);}")
Script.Append("</script>")
Page.RegisterStartupScript("SoloNumero", Script.ToString)
Attributes.Add("onkeypress", "return solonumeros(event);")
MyBase.Render(writer)
End Sub
End Class
Nota: Los créditos de esta función javascript son de JavierB del foro Javascript