0Pricing
jQuery Academy · Lección

Manipulación dinámica de campos de formulario

Aprenda a añadir, eliminar y modificar dinámicamente campos de formulario según la entrada del usuario, creando interfaces de formularios adaptables e interactivas con jQuery.

Manipulación dinámica de campos de formulario es una lección gratuita de jQuery Academy en CoddyKit. Esta es la lección 1 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de jQuery Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de jQuery Academy incluye 3 lecciones en total.

Formularios dinámicos: por qué y cómo

Los formularios suelen ser estáticos, pero las aplicaciones web modernas prosperan gracias a la interactividad. La manipulación dinámica de campos de formulario le permite cambiar la estructura de un formulario en tiempo real.

Esto significa que puede añadir, eliminar o modificar campos de entrada mientras el usuario interactúa con la página. ¡El resultado es una experiencia de usuario mucho mejor y formularios más adaptables!

Añadir campos: conceptos básicos

La idea fundamental para añadir campos consiste en crear nuevos elementos HTML e insertarlos en el Document Object Model (DOM).

  • Use jQuery para crear elementos (por ejemplo, $('')).
  • Use métodos como .append(), .prepend(), .after() o .before() para colocarlos con precisión dentro del formulario.
  • Recuerde asignar atributos name adecuados a los nuevos campos, especialmente para su procesamiento en el backend.

Añadir un campo de correo electrónico

Añadamos un botón que, al hacer clic, genere un nuevo campo de entrada para el correo electrónico. Observe cómo creamos la cadena HTML y después la añadimos.

<div id="email-fields">
  <input type="email" name="email[]" placeholder="Email 1">
</div>
<button id="add-email">Add Another Email</button>

<script>
$(document).ready(function() {
  let emailCount = 1;
  $('#add-email').on('click', function() {
    emailCount++;
    const newEmailField = `
      <input type="email" name="email[]" 
             placeholder="Email ${emailCount}">
    `;
    $('#email-fields').append(newEmailField);
  });
});
</script>

Eliminar campos: limpieza

Del mismo modo que los usuarios pueden necesitar añadir campos, a menudo también necesitan eliminarlos. Esto mantiene el formulario limpio y adaptado a sus necesidades.

El método .remove() de jQuery es perfecto para ello. Elimina por completo del DOM los elementos seleccionados, junto con los datos asociados y los controladores de eventos.

Eliminar un campo específico

Ahora ampliaremos el ejemplo anterior. Añadiremos un botón «Eliminar» junto a cada campo de correo electrónico. Al hacer clic en él, se eliminará ese campo específico.

Importante: ¡Preste atención a cómo gestionamos los eventos de los botones «Eliminar» añadidos dinámicamente!

<div id="email-fields">
  <div class="email-group">
    <input type="email" name="email[]" placeholder="Email 1">
    <button class="remove-email">Remove</button>
  </div>
</div>
<button id="add-email">Add Another Email</button>

<script>
$(document).ready(function() {
  let emailCount = 1;

  $('#add-email').on('click', function() {
    emailCount++;
    const newEmailGroup = `
      <div class="email-group">
        <input type="email" name="email[]" 
               placeholder="Email ${emailCount}">
        <button class="remove-email">Remove</button>
      </div>
    `;
    $('#email-fields').append(newEmailGroup);
  });

  // Event delegation for remove buttons
  $('#email-fields').on('click', '.remove-email', function() {
    $(this).parent('.email-group').remove();
  });
});
</script>

Modificar campos: ajustar atributos

A veces no necesita añadir ni eliminar un campo, sino simplemente cambiar sus propiedades. Estas pueden ser su value, placeholder, estado disabled o incluso su name o id.

jQuery proporciona .attr() para los atributos HTML y .prop() para las propiedades del DOM. A menudo se prefiere .prop() para atributos booleanos como checked, disabled o selected.

Alternar el estado de un campo

Aquí tiene un ejemplo en el que una casilla de verificación controla si un campo de texto está habilitado o deshabilitado. Usamos .prop() para cambiar la propiedad disabled.

<label>
  <input type="checkbox" id="enable-input"> Enable Input
</label>
<input type="text" id="my-input" value="Hello" disabled>

<script>
$(document).ready(function() {
  $('#enable-input').on('change', function() {
    const isChecked = $(this).is(':checked');
    $('#my-input').prop('disabled', !isChecked); // Set disabled based on checkbox state
  });
});
</script>

Eventos en elementos dinámicos

Un error frecuente: los controladores de eventos directos (como $('#myButton').on('click', ...)) solo se vinculan a los elementos presentes cuando se carga la página.

Para los elementos añadidos dinámicamente, necesita usar la delegación de eventos. Esto significa vincular el listener del evento a un elemento padre estático y especificar después un selector para los elementos hijo dinámicos. El método .on() de jQuery gestiona esto de forma excelente.

Ejemplo práctico de «Añadir más»

Combinando lo que hemos aprendido, este es un patrón habitual: un botón «Añadir habilidad» que permite a los usuarios enumerar varias habilidades, cada una con su propio botón «Eliminar».

Observe el uso de data-id para la identificación única y de .closest() para encontrar el elemento padre que se debe eliminar.

<div id="skill-list">
  <div class="skill-item" data-id="1">
    <input type="text" name="skill[]" placeholder="Skill 1">
    <button class="remove-skill">Remove</button>
  </div>
</div>
<button id="add-skill">Add Skill</button>

<script>
$(document).ready(function() {
  let skillId = 1; // Unique ID for each skill item

  $('#add-skill').on('click', function() {
    skillId++;
    const newSkillItem = `
      <div class="skill-item" data-id="${skillId}">
        <input type="text" name="skill[]" 
               placeholder="Skill ${skillId}">
        <button class="remove-skill">Remove</button>
      </div>
    `;
    $('#skill-list').append(newSkillItem);
  });

  // Event delegation for remove buttons
  $('#skill-list').on('click', '.remove-skill', function() {
    // Prevent removing the very first skill if desired
    if ($('.skill-item').length > 1) {
      $(this).closest('.skill-item').remove();
    } else {
      alert("You need at least one skill!");
    }
  });
});
</script>

Comprobación: formularios dinámicos

Ponga a prueba sus conocimientos sobre la manipulación dinámica de formularios.

Repaso: formularios dinámicos

En esta lección, aprendió a hacer que los formularios sean más interactivos y fáciles de usar añadiendo, eliminando y modificando campos dinámicamente mediante jQuery.

  • Use .append(), .prepend(), .after() y .before() para añadir elementos.
  • Use .remove() para eliminar elementos.
  • Use .attr() y .prop() para modificar los atributos y las propiedades de los elementos.
  • Es fundamental usar la delegación de eventos con .on() para los eventos de elementos que se añaden al DOM después de la carga inicial de la página.

A continuación, profundizaremos en la validación de formularios del lado del cliente.

Preguntas frecuentes

¿La lección «Manipulación dinámica de campos de formulario» es gratis?

Sí — el texto completo de «Manipulación dinámica de campos de formulario» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de jQuery Academy, actualiza a CoddyKit PRO. El curso de jQuery Academy incluye 3 lecciones en total.

¿Qué aprenderé en «Manipulación dinámica de campos de formulario»?

Aprenda a añadir, eliminar y modificar dinámicamente campos de formulario según la entrada del usuario, creando interfaces de formularios adaptables e interactivas con jQuery. Practicas jQuery Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar jQuery Academy?

No se requiere experiencia previa. jQuery Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 3.

¿Cuánto tiempo toma la lección «Manipulación dinámica de campos de formulario»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de jQuery Academy?

Sí. Cada lección de jQuery Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Manipulación dinámica de campos de formulario
  2. Lógica de validación de formularios del lado del cliente
  3. Envío de formularios mediante AJAX y comentarios
← Volver a jQuery Academy