Как автоматически добавить номер к текстовому имени клонированных входов - PullRequest
0 голосов
/ 02 февраля 2020

У меня проблема, которую я пытаюсь решить уже несколько часов ... Я хочу изменить имя своих автоматически клонированных входов.

Это мой HTML код:

 <form id="dodawanie" action="" method="post">
     <div class="formularz">
         <fieldset>
             <input type="number" id="indeks" name="indeks" class="pozycja">Indeks
             <input type="text" id="tytul" name="tytul" class="pozycja">Tytuł
             <input type="text" id="opis" name="opis" class="pozycja">Opis
             <input type="text" id="gatunki" name="gatunki" class="pozycja">Gatunki
             <input type="text" id="tagi" name="tagi" class="pozycja">Tagi
             <input type="text" id="rok" name="rok" class="pozycja">Rok
             <input type="text" id="pv" name="pv" class="pozycja">PV
             <input type="text" id="obrazki" name="obrazki" class="pozycja">Obrazki
             <input type="text" id="odcinki" name="odcinki" class="pozycja">Odcinki
        </fieldset>
    </div>
    <input type="submit" name="dodaj">
    <button type="button">+</button>
 </form>

А это мой jQuery скрипт:

$(document).ready(function(){
    var count = 1;
    $("button").click(function(){
        var kopiuj = $(".formularz").first().clone(); 
        var current_name = $('[name]');
        current_name.each(function(){
            $currname = $(this).attr('name');
            $('input').each(function(){
                $(kopiuj).find('.pozycja').attr('name', ""+$currname+"["+count+"]");
            });
        });
        $(".formularz").last().after(kopiuj);
        count++;
    });
});

Как добавить число к атрибуту name клонированных входов?

1 Ответ

0 голосов
/ 03 февраля 2020

Ваш скрипт немного усложнен, но, похоже, работает (не так ли?). Проверьте упрощенную версию ниже:

$(document).ready(function(){
    $("button").click(function(){
        var formularz = $(".formularz");
        var kopiuj = formularz.first().clone();
        var liczba = formularz.length;
        kopiuj.find('.pozycja[name]').each(function(){
            $(this).attr('name', this.name + '[' + liczba + ']');
        });
        formularz.last().after(kopiuj);
    });
});

Попробуйте рабочую демонстрацию: https://jsfiddle.net/tvcsubaf/

Обратите внимание, что отправка данных формы на ваш бэкэнд таким образом. Лучше создать массив из клонированных входных значений (ie. indeks[]) или назвать их по схеме: indeks-1, indeks-2, et c.


Если вы решите Чтобы добавить [0] к базовым name атрибутам и затем увеличить это число в каждом следующем наборе полей, вы можете использовать следующий скрипт:

$(document).ready(function(){
    $("button").click(function(){
        var last = $(".formularz:last");
        last.clone().insertAfter(last).find('.pozycja[name]').each(function(){
            $(this).attr('name', this.name.replace(/(\d+)/, function(){
                return arguments[1]*1+1;
            }));
        });
    });
});

Рабочая демонстрация: https://jsfiddle.net/9chwkx82/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...