0Pricing
jQuery Academy · Урок

Динамическое управление полями формы

Научитесь динамически добавлять, удалять и изменять поля формы в зависимости от ввода пользователя, создавая адаптивные и интерактивные формы с помощью jQuery.

«Динамическое управление полями формы» — бесплатный урок jQuery Academy на CoddyKit. Это урок 1 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения jQuery Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс jQuery Academy содержит 3 уроков всего.

Динамические формы: зачем и как

Формы часто бывают статичными, но современные веб-приложения основаны на интерактивности. Динамическое изменение полей формы позволяет менять структуру формы в реальном времени.

Это означает, что Вы можете добавлять, удалять или изменять поля ввода, пока пользователь взаимодействует со страницей. Благодаря этому повышается удобство работы и формы становятся более адаптивными!

Добавление полей: основы

Основная идея добавления полей заключается в создании новых HTML-элементов и их вставке в объектную модель документа (DOM).

  • Используйте jQuery для создания элементов (например, $('')).
  • Используйте такие методы, как .append(), .prepend(), .after() или .before(), чтобы точно разместить их в форме.
  • Не забывайте задавать новым полям подходящие атрибуты name, особенно для обработки на серверной стороне.

Добавление нового поля электронной почты

Давайте добавим кнопку, которая при нажатии создаёт новое поле для ввода адреса электронной почты. Обратите внимание, как мы создаём HTML-строку, а затем добавляем её.

<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>

Удаление полей: очистка

Так же как пользователям может понадобиться добавлять поля, им часто требуется и удалять их. Это позволяет сохранить форму чистой и соответствующей их потребностям.

Метод jQuery .remove() идеально подходит для этой задачи. Он полностью удаляет выбранный элемент или элементы из DOM вместе со связанными данными и обработчиками событий.

Удаление определённого поля ввода

Теперь расширим предыдущий пример. Мы добавим кнопку «Удалить» рядом с каждым полем электронной почты. При нажатии она удалит именно это поле.

Важно: обратите внимание, как мы обрабатываем события для динамически добавленных кнопок «Удалить»!

<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>

Изменение полей: настройка атрибутов

Иногда поле не нужно добавлять или удалять — достаточно изменить его свойства. Это может быть его value, placeholder, состояние disabled или даже его name или id.

jQuery предоставляет .attr() для HTML-атрибутов и .prop() для свойств DOM. Для логических атрибутов, таких как checked, disabled или selected, часто предпочтительнее использовать .prop().

Переключение состояния поля

Вот пример, в котором флажок управляет доступностью текстового поля. Для изменения свойства disabled мы используем .prop().

<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>

События динамических элементов

Распространённая ошибка: прямые обработчики событий (например, $('#myButton').on('click', ...)) подключаются только к элементам, существующим на момент загрузки страницы.

Для динамически добавленных элементов необходимо использовать делегирование событий. Это означает, что обработчик событий прикрепляется к статическому родительскому элементу, а затем для динамических дочерних элементов указывается селектор. Метод jQuery .on() отлично справляется с этой задачей.

Практический пример «Добавить ещё»

Объединим изученное в распространённом шаблоне: кнопка «Добавить навык» позволяет пользователям указать несколько навыков, у каждого из которых есть собственная кнопка «Удалить».

Обратите внимание на использование data-id для уникальной идентификации и .closest() для поиска родительского элемента, который нужно удалить.

<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>

Проверка динамических форм

Проверьте, насколько хорошо Вы поняли динамическое изменение форм.

Итоги: динамические формы

На этом уроке Вы научились делать формы более интерактивными и удобными для пользователя, динамически добавляя, удаляя и изменяя поля с помощью jQuery.

  • Используйте .append(), .prepend(), .after(), .before() для добавления элементов.
  • Используйте .remove() для удаления элементов.
  • Используйте .attr() и .prop() для изменения атрибутов и свойств элементов.
  • Особенно важно использовать делегирование событий с помощью .on() для событий элементов, добавленных в DOM после первоначальной загрузки страницы.

Далее мы подробно рассмотрим проверку форм на стороне клиента!

Часто задаваемые вопросы

Урок «Динамическое управление полями формы» бесплатный?

Да — полный текст урока «Динамическое управление полями формы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс jQuery Academy, подпишись на CoddyKit PRO. Курс jQuery Academy содержит 3 уроков всего.

Чему я научусь в уроке «Динамическое управление полями формы»?

Научитесь динамически добавлять, удалять и изменять поля формы в зависимости от ввода пользователя, создавая адаптивные и интерактивные формы с помощью jQuery. Ты практикуешь jQuery Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать jQuery Academy?

Предыдущий опыт не требуется. jQuery Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 3.

Сколько времени занимает урок «Динамическое управление полями формы»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке jQuery Academy?

Да. Каждый урок jQuery Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Динамическое управление полями формы
  2. Логика проверки форм на стороне клиента
  3. Отправка форм через AJAX и обратная связь
← Назад к jQuery Academy