Как прикрутить jQuery Validate к textarea, являющуюся CKEditor 5?

Имеется следующий код для формы, отправляющей e-mail:

$(document).ready(function () {
  const form = $('.form-block__email-form');
  const emailTextarea = $('.form__text');
  let emailTextEditor;

  ClassicEditor
    .create(document.querySelector( '#emailText'))
    .then(editor => {
      emailTextEditor = editor;
    } )
    .catch(error => {
      console.error(error);
    });

  form.validate({
    rules: {
      emailRecipients: {
        required: true,
        email: true
      },
      emailText: {
        
      }
    },
    messages: {
      emailRecipients: {
        required: "Пожалуйста, введите e-mail",
        email: "Пожалуйста, введите e-mail в корректном формате"
      },
      emailText: {
        required: "Пожалуйста, введите текст письма"
      }
    }
  });
});
html {
  box-sizing: border-box; }

*,
*::before,
*::after {
  box-sizing: inherit; }

body {
  display: flex;
  flex-direction: column;
  margin: 0;
  min-height: 100vh;
  color: #000;
  font-size: 16px;
  font-family: 'Roboto Regular', sans-serif;
  line-height: 1.5;
  background-color: #fff; }

a {
  text-decoration: none;
  color: inherit; }

.form-control.error {
  border-color: #ff0000; }
  .form-control.error:focus {
    border-color: #ff0000; }

.form-control:focus {
  border-color: #4169e1;
  box-shadow: none; }

label.error {
  color: #ff0000;
  font-size: 0.75rem; }

.header {
  color: #eeeeee;
  background: #002366; }
  .header__navbar {
    padding: 1.25rem; }
  .header__logo {
    display: inline-flex;
    align-items: center;
    font-size: 1.5rem;
    font-family: 'Segoe UI', sans-serif; }
    .header__logo:hover, .header__logo:focus {
      color: inherit;
      text-decoration: none; }
    .header__logo .logo__icon {
      margin-right: .625rem; }

.form-block {
  padding: 4rem 0; }

.ck.ck-editor__main > .ck-editor__editable {
  min-height: 18.75rem; }
  .ck.ck-editor__main > .ck-editor__editable:not(.ck-editor__nested-editable).ck-focused {
    border-color: #4169e1;
    box-shadow: none; }

.footer {
  padding: 2rem 0;
  color: #eee;
  background: #002366; }
  .footer__text {
    margin: 0; }
  .footer__link {
    display: inline-block; }
    .footer__link::after {
      content: '';
      display: block;
      width: 100%;
      background-color: #eee;
      height: 1px;
      transform: scale(0);
      transition: all .3s; }
    .footer__link:hover, .footer__link:focus {
      color: inherit;
      text-decoration: none; }
      .footer__link:hover::after, .footer__link:focus::after {
        transform: scale(1); }
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Email Form</title>
    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
    <link rel="stylesheet" href="css/style.css">
</head>
<body>
<header class="header">
    <nav class="header__navbar navbar">
        <a class="header__logo" href="#">
            <i class="logo__icon fa fa-envelope-o" aria-hidden="true"></i>
            Email Form
        </a>
    </nav>
</header>

<main class="main d-flex flex-column flex-grow-1">
    <section class="form-block">
        <div class="container">
            <form class="form-block__email-form" action="" enctype="multipart/form-data" method="post">
                <div class="form-group">
                    <label for="emailRecipients">Кому</label>
                    <input type="email"
                           class="form-control"
                           id="emailRecipients"
                           name="emailRecipients"
                           placeholder="Введите адрес или несколько адресов через запятую/точку с запятой"
                           multiple
                    >
                    <div class="valid-feedback">Looks good!</div>
                </div>
                <div class="form-group">
                    <label for="emailSubject">Тема письма</label>
                    <input type="text"
                           class="form-control"
                           id="emailSubject"
                           name="emailSubject"
                           placeholder="Введите тему письма"
                    >
                    <div class="valid-feedback">Looks good!</div>
                </div>
                <div class="form-group">
                    <label for="emailText">Текст письма</label>
                    <textarea class="form__text form-control"
                              id="emailText"
                              placeholder="Введите текст письма"
                              name="emailText"
                    ></textarea>
                    <div class="invalid-feedback">Please choose a username.</div>
                </div>
                <button type="submit" class="btn btn-success">Отправить</button>
            </form>
        </div>
    </section>
</main>

<script src="https://cdn.ckeditor.com/ckeditor5/18.0.0/classic/ckeditor.js"></script>
<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.validate.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
<script src="js/index.js"></script>

</body>
</html>

К полям ввода e-mail и текста письма решил прикрутить валидацию с помощью jQuery Validate. Однако неясно, как прикрутить валидацию к полю ввода текста письма, если учесть, что оно является CKEditor'ом. Попробовал сделать по образцу первого ответа на этот вопрос (только с заменой CKEDITOR.instances.editor1.updateElement() на emailTextEditor.updateSourceElement()), но это не сработало. Как добавить правило required к указанному полю ввода?


Ответы (0 шт):