Permitir solo determinados caracteres en un cuadro de texto (C#)

por Christian Wenz

Descargar PDF

Los controles de validación de ASP.NET pueden garantizar que solo se permiten determinados caracteres en la entrada de usuario. Sin embargo, esto no impide que los usuarios escriban caracteres no válidos e intenten enviar el formulario.

Información general

Los controles de validación de ASP.NET pueden garantizar que solo se permiten determinados caracteres en la entrada de usuario. Sin embargo, esto no impide que los usuarios escriban caracteres no válidos e intenten enviar el formulario.

Pasos

El Kit de herramientas de control de ASP.NET AJAX contiene el control FilteredTextBox que extiende un cuadro de texto. Una vez activado, solo se puede escribir un determinado conjunto de caracteres en el campo.

Para que esto funcione, primero necesitamos, como es habitual, el control ScriptManager de ASP.NET AJAX, que carga las bibliotecas de JavaScript que también se usan en el Kit de herramientas de control de ASP.NET AJAX:

<asp:ScriptManager ID="asm" runat="server" />

A continuación, necesitamos un cuadro de texto:

Numbers only: <asp:TextBox ID="TextBox1" runat="server" />

Por último, el control FilteredTextBoxExtender se encarga de restringir los caracteres que el usuario puede escribir. En primer lugar, establezca el atributo TargetControlID en el valor de ID del control TextBox. A continuación, elija uno de los valores FilterType disponibles:

  • Custom, predeterminado; debe proporcionar una lista de caracteres válidos.
  • LowercaseLetters, solo letras minúsculas
  • Numbers, solo dígitos.
  • UppercaseLetters, solo letras mayúsculas.

Si se usa el elemento Custom FilterType, se debe establecer la propiedad ValidChars y se debe proporcionar una lista de caracteres que se puedan escribir. Por cierto, si intenta pegar texto en el cuadro de texto, se quitan todos los caracteres no válidos.

Este es el marcado del control FilteredTextBoxExtender que solo permite dígitos (algo que también habría sido posible con FilterType="Numbers"):

<ajaxToolkit:FilteredTextBoxExtender ID="ftbe" runat="server"
 TargetControlID="TextBox1" ValidChars="1234567890" />

Ejecute la página e intente escribir una letra si JavaScript está habilitado, no funcionará; sin embargo, los dígitos aparecen en la página. Sin embargo, tenga en cuenta que la protección que proporciona FilteredTextBox no es a prueba de viñetas: si JavaScript está habilitado, se puede escribir cualquier dato en el cuadro de texto, por lo que debe usar medios de validación adicionales, por ejemplo, controles de validación de ASP.NET.

Only digits may be entered

Solo se pueden escribir dígitos (haga clic para ver la imagen a tamaño completo).