El Atributo MAXLENGTH

Se utiliza para limitar la cantidad de caracteres que un usuario puede ingresar en campos de texto o áreas de texto.

El atributo maxlength en HTML se utiliza para limitar la cantidad de caracteres que un usuario puede ingresar en campos de texto o áreas de texto. Es esencial para controlar la entrada de datos, evitar errores y garantizar que la información cumpla con requisitos específicos. Aquí un tutorial detallado:

¿Qué es el Atributo maxlength?

Propósito: Define el número máximo de caracteres permitidos en un campo de entrada (<input>) o área de texto (<textarea>).

Elementos compatibles:

  • <input> (tipos: text, email, password, tel, url, search).

  • <textarea>.

Sintaxis Básica

<!-- Ejemplo con <input> -->
<input type="text" maxlength="10" placeholder="Máximo 10 caracteres">

<!-- Ejemplo con <textarea> -->
<textarea maxlength="200" placeholder="Escribe tu mensaje..."></textarea>

Ejemplos Prácticos

Limitar nombre de usuario

<label for="username">Nombre de usuario (max. 15 caracteres):</label>
<input 
  type="text" 
  id="username" 
  name="username" 
  maxlength="15"
>

Comentario con límite de caracteres

<label for="comentario">Comentario:</label>
<textarea 
  id="comentario" 
  name="comentario" 
  maxlength="200" 
  placeholder="Máximo 200 caracteres"
></textarea>

Comportamiento en el Navegador

  • Bloqueo automático: El navegador evita que el usuario ingrese más caracteres de los permitidos.

  • Feedback visual: Algunos navegadores muestran un contador (ej: "15/100").

  • Validación en formularios: Si el usuario excede el límite, el campo se marca como inválido al intentar enviar el formulario.

Combinar con JavaScript para Mejorar la Experiencia

Contador de caracteres en tiempo real

<textarea id="mensaje" maxlength="100" oninput="actualizarContador()"></textarea>
<p id="contador">Caracteres restantes: 100</p>

<script>
  function actualizarContador() {
    const textarea = document.getElementById("mensaje");
    const contador = document.getElementById("contador");
    const maxLength = textarea.getAttribute("maxlength");
    const restantes = maxLength - textarea.value.length;
    contador.textContent = `Caracteres restantes: ${restantes}`;
  }
</script>

Alertar al usuario al alcanzar el límite

<input 
  type="text" 
  maxlength="20" 
  oninput="mostrarAlerta(this)"
  placeholder="Máximo 20 caracteres"
>

<script>
  function mostrarAlerta(campo) {
    if (campo.value.length >= campo.maxLength) {
      alert("¡Has alcanzado el límite de caracteres!");
    }
  }
</script>

Buenas Prácticas

Usa maxlength con campos de texto cortos: Nombres, códigos, números de teléfono, etc.

Combínalo con minlength (si es relevante):

<input type="password" minlength="8" maxlength="20">

Añade retroalimentación visual: Un contador ayuda al usuario a entender la restricción.

Valida en el servidor: maxlength es una validación del lado del cliente. ¡Nunca confíes solo en él para seguridad!

Errores Comunes

Usar maxlength en campos no compatibles

<!-- Incorrecto: maxlength no funciona con type="number" -->
<input type="number" maxlength="5"> <!-- Usa min y max en su lugar -->

Ignorar caracteres especiales

  • maxlength cuenta caracteres, no bytes. Ejemplo: Un emoji (????) ocupa 1 carácter, pero 4 bytes en UTF-8.

Olvidar el mensaje de error personalizado

  • Si el usuario excede el límite, el mensaje predeterminado del navegador puede no ser claro. Personalízalo con JavaScript.

Compatibilidad en Navegadores

  • Soportado en: Chrome, Firefox, Safari, Edge y navegadores móviles modernos.

  • Limitaciones:

    • En navegadores antiguos (IE11), la validación automática puede faltar.

    • Algunos dispositivos móviles no muestran el contador de caracteres.

Ejemplo Avanzado: Formulario de Tarjeta de Crédito

<label for="tarjeta">Número de tarjeta (16 dígitos):</label>
<input 
  type="text" 
  id="tarjeta" 
  name="tarjeta" 
  maxlength="16" 
  pattern="[0-9]{16}" 
  placeholder="0000 0000 0000 0000"
>

<!-- Validación personalizada -->
<p id="error-tarjeta" style="color: red; display: none;">Deben ser 16 dígitos.</p>

<script>
  document.querySelector("form").addEventListener("submit", (e) => {
    const tarjeta = document.getElementById("tarjeta");
    const error = document.getElementById("error-tarjeta");
    
    if (tarjeta.value.length !== 16 || !/^[0-9]+$/.test(tarjeta.value)) {
      e.preventDefault();
      error.style.display = "block";
    }
  });
</script>

Conclusión

El atributo maxlength es una herramienta clave para controlar la entrada de datos en formularios HTML. Al usarlo junto con JavaScript y validaciones del servidor, garantizas una experiencia de usuario fluida y datos consistentes. ¡Implementa límites claros y comunícalos efectivamente!