b2bon.ru

Формы (cybervela.forms.js)

Класс forms предназначен для обработки форм и их элементов на веб-странице. Он является частью системы Cybervela и предоставляет базовую функциональность для работы с формами.

Инициализация

const forms = new forms(core);

где core - экземпляр основного класса системы.

Работа с формами

Для работы с формами используйте класс form.xhr.

При отправке формы:

  • 1. Форма должна иметь класс xhr
  • 2. Можно указать callback-функцию через data-атрибут: data-callback="methodName"

Пример:

<form class="xhr" data-callback="handleFormSubmit">
поля формы 
</form>

После успешной отправки формы и получения ответа от сервера, выполняется указанная callback-функция для обработки полученных данных.

Метод prepare

Метод prepare() автоматически вызывается при создании экземпляра класса и выполняет следующие действия:

  • 1. Настраивает обработчики событий для элементов загрузки Excel-файлов
  • 2. Автоматически активирует клик по input-элементу при клике на родительский label

Загрузка Excel-файлов

Для создания элемента загрузки Excel-файла используйте следующую разметку:

<label>
  <input type="file" class="xls" accept=".xls,.xlsx">
</label>

При клике на label автоматически откроется диалог выбора файла.

Редактирование полей

Метод startEditing() позволяет активировать режим редактирования для элементов с классом .field_editable. Используется при клике на иконку редактирования (.edit_icon) или двойном клике по полю.

Пример HTML-структуры:

.warp_field_editable
  .field_editable(data-name="email" data-type="text") example@example.com
  .edit_icon(style="cursor: pointer") 
  input(type="file" class="xls")

При редактировании:

  • 1. Создается input/textarea в зависимости от data-type
  • 2. Отправляются данные на сервер при потере фокуса
  • 3. Форма автоматически перезагружается

Обработка событий

Метод setEvents() настраивает:

  • • Делегирование кликов по иконкам редактирования
  • • Разделение одиночных/двойных кликов по ссылкам
  • • Обработку Enter для подтверждения изменений

Особенности поведения:

  • • Одиночный клик - переход по ссылке если это ссылка
  • • Двойной клик - редактирование

Пример полной формы

form.fields_editable(id="user_profile")
  .warp_field_editable
    .field_editable(data-name="name" data-type="text") Иван Иванов
    .edit_icon(style="cursor: pointer") 

  .warp_field_editable
    .field_editable(data-name="bio" data-type="textarea") Описание пользователя
    .edit_icon(style="cursor: pointer") 

  a(href="/profile") Ссылка (откроется при одиночном клике)

  label
    input(type="file" class="xls")