Добавляйте поля ckeditors динамически в модальном режиме

у меня есть cms, где при нажатии открывается модальное окно, и внутри у меня есть несколько полей, а затем у меня есть еще одна кнопка внутри модального окна, где я могу динамически добавлять поля ckeditors, нажав кнопку, вот что я пытался сделать:

<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel = "stylesheet"/>
<link href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" rel = "stylesheet"/>
<script src = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<div class = "col-md-12">
  <button style = "margin-bottom:5px;" type = "button" data-toggle = "modal" data-target = "#add_data_Modal" class = "btn btn-success"><i class = "fa fa-plus" aria-hidden = "true"></i> Adauga</button>
</div>
<div id = "add_data_Modal" class = "modal fade" role = "dialog">

<div class = "modal-dialog modal-lg">



  <!-- Modal content-->

  <div class = "modal-content">

    <div class = "modal-header">

      <button type = "button" class = "close" data-dismiss = "modal">&times;</button>

      <h4 class = "modal-title">Adauga categorie</h4>

    </div>

    <div class = "modal-body">

      <div class = "row">

       <div class = "container">

          <form action = "add.php" method = "POST">

          <div class = "form-group">

              <label for = "input-1">Nume Categorie</label>

              <input type = "text" class = "form-control" name = "nume" id = "nume" placeholder = "Nume categorie">

          </div>

          <div class = "form-group">

              <label for = "input-1">Categorie</label>

              <select class = "form-control" id = "categorie" name = "categorie">

                  <option value = "0">Categorie principala</option>


              </select>

          </div>

          <div class = "form-group">

              <label for = "input-1">Vizibil</label>

              <select class = "form-control" id = "activ" name = "activ">

                  <option selected>Selecteaza vizibilitatea</option>

                  <option value = "1">Da</option>

                  <option value = "0">Nu</option>

              </select>

          </div>

          <div class = "form-group">

              <label for = "input-1">Pozitia</label>

              <input type = "text" class = "form-control" name = "pozitie" id = "pozitie" placeholder = "Pozitie">

          </div>

          <div class = "row">

            <div class = "col-md-4">

              <div class = "form-group">

                 <div class = "icheck-material-primary">

                <input type = "checkbox" id = "user-checkbox1" checked = "">

                <label for = "user-checkbox1">Modele Produse</label>

                </div>

              </div>

            </div>

            <div class = "col-md-4">

              <div class = "form-group">

                 <div class = "icheck-material-primary">

                <input type = "checkbox" id = "user-checkbox2" checked = "">

                <label for = "user-checkbox2">Paletar Materiale</label>

                </div>

              </div>

            </div>

            <div class = "col-md-4">

              <div class = "form-group">

                 <div class = "icheck-material-primary">

                <input type = "checkbox" id = "user-checkbox3" checked = "">

                <label for = "user-checkbox3">Estimare Pret</label>

                </div>

              </div>

            </div>

          </div>

          <div class = "form-group">

            <div class = "rowa">

              <div class = "add-plus">Adauga tab-uri</div>

              <div class = "col-md-12">

                <span id = "add_aut" class = "btn btn-primary">+</span>

                 <div id = "auth-rows"></div>

              </div>

            </div>

          </div>

       </div>

      </div>

    </div>

    <div class = "modal-footer">

        <button type = "button" class = "btn btn-secondary" data-dismiss = "modal"><i class = "fa fa-times"></i> Inchide</button>

        <button type = "submit" name = "submit" class = "btn btn-primary"><i class = "fa fa-check-square-o"></i> Salveaza</button>

      </div>

       </form>

  </div>

</div>

</div>

<script>

    $(document).ready(function(e){

        // variable 

        var html3 = '<div class = "row" id = "parent-autor"> <p id = "auth-del"><i class = "fa fa-minus-square" aria-hidden = "true"></i></p> <div class = "row"> <div class = "col-md-4"> <div class = "form-group"> <input type = "text" class = "form-control" placeholder = "titlu_tab" name = "titlu_tab[]"> </div> </div> <div class = "col-md-4"> <div class = "form-group"> <input type = "text" class = "form-control" placeholder = "Pozitie" name = "pozitie_tab[]"> </div> </div> </div> <div class = "col-md-12"> <div class = "form-group"> <textarea name = "editor[]" class = "ckeditor" id = "continut" rows = "8" cols = "80"></textarea> </div> </div></div>';


        $("#add_aut").click(function(e){

            $('#auth-rows').append(html3);

        });


        $('#auth-rows').on('click', '#auth-del', function(E){

            $(this).parent('div').remove();

        });
});

</script>
In this modal when i click on add i want to add more fields, is done this but not appear ckeditor just a plain textarea which i don`t need that. Thank you!
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
734
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы, вероятно, захотите присвоить текстовой области собственный идентификатор, если планируете иметь их несколько.

let currentId = 0;

Я переместил код «var html» внутрь функции создания, чтобы мы могли редактировать идентификатор каждый раз, когда нажимается кнопка «Добавить», потому что нам каждый раз нужен уникальный идентификатор. После того, как текстовая область существует, я вызываю .ckeditor() для этой текстовой области, которая должна включить инструменты ckeditor для этого поля. Затем я увеличиваю customId, чтобы убедиться, что следующая добавленная форма имеет другой идентификатор.

$("#add_aut").click(function(e){

    var html3 = '<div class = "row" id = "parent-autor"> <p id = "auth-del"><i class = "fa fa-minus-square" aria-hidden = "true"></i></p> <div class = "row"> <div class = "col-md-4"> <div class = "form-group"> <input type = "text" class = "form-control" placeholder = "titlu_tab" name = "titlu_tab[]"> </div> </div> <div class = "col-md-4"> <div class = "form-group"> <input type = "text" class = "form-control" placeholder = "Pozitie" name = "pozitie_tab[]"> </div> </div> </div> <div class = "col-md-12"> <div class = "form-group"> <textarea name = "editor[]" class = "ckeditor" id = "continut' + currentId + '" rows = "8" cols = "80"></textarea> </div> </div></div>';
    $('#auth-rows').append(html3);
    $('#continut' + currentId).ckeditor();
    currentId += 1;

});

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

Кроме того, вам нужно добавить ckeditor.js, а также скрипт адаптера jquery, чтобы это работало.

См. эту скрипку https://jsfiddle.net/bkqxnu8f/3/

Другие вопросы по теме