Saltar al contenido principal

MaskedTextField

Abrir en ChatGPT
Sombra dwc-textfield 24.10
Java API

El componente MaskedTextField proporciona una entrada de texto configurable que impone reglas de formato y validación. Es muy adecuado para aplicaciones que requieren entradas estructuradas, como sistemas financieros, de comercio electrónico y de salud.

Este componente se puede instanciar con o sin parámetros. Puedes definir un valor inicial, una etiqueta, un texto de marcador de posición y un listener en caso de que el valor cambie.

MaskedTextField field = new MaskedTextField("ID de Cuenta");
field.setMask("ZZZZ-0000")
.setHelperText("Máscara: ZZZZ-0000 - por ejemplo: SAVE-2025")

Reglas de máscara​

El MaskedTextField formatea la entrada de texto utilizando una máscara: una cadena que define qué caracteres se permiten en cada posición. Esto asegura una entrada consistente y estructurada para cosas como números de teléfono, códigos postales y formatos de identificación.

Aplicando máscaras programáticamente

Para formatear cadenas con la misma sintaxis de máscara fuera de un campo, por ejemplo al renderizar datos en una Table, utiliza la clase utilitaria MaskDecorator.

Caracteres de máscara soportados​

CaracterDescripción
XCualquier carácter imprimible
aCualquier carácter alfabético (mayúsculas o minúsculas)
ACualquier carácter alfabético; las letras minúsculas se convierten en mayúsculas
0Cualquier dígito (0–9)
zCualquier dígito o letra (mayúsculas o minúsculas)
ZCualquier dígito o letra; las letras minúsculas se convierten en mayúsculas

Todos los demás caracteres en la máscara se tratan como literales y deben ser escritos exactamente. Por ejemplo, una máscara como XX@XX requiere que el usuario ingrese un @ en el medio.

  • Los caracteres no válidos se ignoran silenciosamente.
  • La entrada corta se rellena con espacios.
  • La entrada larga se truncará para ajustarse a la máscara.

Ejemplos​

field.setMask("(000) 000-0000"); // Ejemplo: (123) 456-7890
field.setMask("A00 000"); // Ejemplo: A1B 2C3 (código postal canadiense)
field.setMask("ZZZZ-0000"); // Ejemplo: ABCD-1234
field.setMask("0000-0000-0000-0000");// Ejemplo: 1234-5678-9012-3456
Entrada completa permitida

Si la máscara solo contiene X, el campo se comporta como un TextField estándar, permitiendo cualquier entrada imprimible. Esto es útil cuando deseas reservar la posibilidad de formatear sin aplicar reglas estrictas de caracteres.

Mostrar Código

Patrones de validación​

Mientras que las máscaras definen la estructura de la entrada, puedes combinarlas con patrones de validación para imponer reglas de entrada más específicas. Esto agrega una capa adicional de validación del lado del cliente utilizando expresiones regulares.

Utiliza el método setPattern() para aplicar una expresión regular personalizada:

field.setPattern("[A-Za-z0-9]{10}"); // Impone un código alfanumérico de 10 caracteres

Esto asegura que la entrada no solo coincida con la máscara, sino que también se ajuste a una estructura definida, como longitud o caracteres permitidos.

Esto es especialmente útil cuando:

  • La máscara permite demasiada flexibilidad
  • Quieres imponer una longitud exacta o un formato específico (por ejemplo, hex, Base64, UUID)
Formato de expresión regular

El patrón debe ser una expresión regular válida de JavaScript, como la que utiliza el tipo RegExp. Puedes encontrar más detalles en la documentación del atributo de patrón HTML.

Restaurando el valor​

El MaskedTextField incluye una función de restauración que resetea el valor del campo a un estado predefinido u original. Esto puede ser útil para deshacer cambios del usuario o revertir a una entrada predeterminada.

field.setRestoreValue("ABC123");
field.restoreValue();

Maneras de restaurar el valor​

  • Programáticamente, llamando a restoreValue()
  • A través del teclado, presionando ESC (esta es la tecla de restauración predeterminada a menos que se sobrescriba mediante un listener de eventos)

Puedes establecer el valor a restaurar con setRestoreValue(). Si no se establece ningún valor de restauración, el campo volverá al valor inicial en el momento en que se renderizó.

Mostrar Código

MaskedTextFieldSpinner​

El MaskedTextFieldSpinner extiende el MaskedTextField añadiendo controles de spinner que permiten a los usuarios alternar entre una lista de valores predefinidos. Esto mejora la experiencia del usuario en situaciones donde la entrada debe estar restringida a un conjunto fijo de opciones válidas.

Mostrar Código

Características clave​

  • Soporte de lista de opciones Rellena el spinner con una lista de valores de cadena válidos utilizando setOptions():

    spinner.setOptions(List.of("Opción A", "Opción B", "Opción C"));
  • Rotación programática Utiliza spinUp() y spinDown() para moverte a través de las opciones:

    spinner.spinUp(); // Selecciona la siguiente opción
    spinner.spinDown(); // Selecciona la opción anterior
  • Control de índice Establece o recupera el índice de selección actual con:

    spinner.setOptionIndex(1);
    int current = spinner.getOptionIndex();
  • Compatibilidad con máscaras Hereda completamente todas las reglas de formato, reglas de máscara y validación de patrones del MaskedTextField.

Estilización​

Loading...