Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Добовление формы еще (https://javascript.ru/forum/jquery/22853-dobovlenie-formy-eshhe.html)

Kuklavod 03.11.2011 11:10

Добовление формы еще
 
Сейчас работаю над функцией добовления формы еще, тоесть например за один раз нужно создать 10 пользователей, если форм мало то админ нажимает знак + и внизу добовляется еще к примеру 10 форм.
Ниже привожу мой код.
Скрипт еще недоделанный, но уже сейчас работает не так как надо.
Проблема в нумерации, каждая форма имеет порядковый номер.
При создании новых форм нужную нумерацию имеет только последняя форма.
Конкретно при загрузке имеется 2 формы с номерами 1,2
При добовлении еще форм нумерация такая 1,2,2,4, а при добовлении еще 2х форм такая: 122226

// Добовление формы еще
   
   // Кнопка
   var more_form = $('.more_item');
   // Колличество форм уже существующих - номера форм
   var n = 2;
   // Заносим в переменную форму для клонирования
   var item_form = $('.question_item:last');
   var html_form = item_form.html();      
   
   // Функция при клике на кнопку добовления форм еще
   more_form.click(function(){
    

        // В цикле добовляем еще 2 формы
        for(var i = 1; i <= 2; i++) {
            
            // Добовляем форму в конец
            item_form.after(html_form);
            // Увеличиваем номер  
            n++;       
            // Заносим в переменную номер последней созданной формы            
            var num = $('.number_question:last');
            // Заменяем номер формы на увеличенный
            num.text(n);
            
        }
   });

Пожалуйста подскажите в чем проблема((

DjDiablo 03.11.2011 12:24

Цитата:

Скрипт еще недоделанный, но уже сейчас работает не так как надо.
Улыбнуло :)


Вообще было бы здорово, если бы ты показал html, до и после клонирования.

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

Kuklavod 03.11.2011 15:12

// Добовление формы еще

   // Кнопка
   var more_form = $('.more_item');
   // Колличество форм уже существующих - номера форм
   var n = 2;
   // То что нужно заменить в форме чтоб она отсылала нужные пост данные
   var regN_g = /<span class="number_question">2/g;
   var regN_i = /TestQuestion\[2\]/g;
   
   // Функция при клике на кнопку добовления форм еще
   more_form.click(function(){
    

        // В цикле добовляем еще 2 формы
        for(var i = 1; i <= 2; i++) {
                
           // Заносим в переменную форму для клонирования
           var item_form = $('.question_item:last');
           var html_form = item_form.html();      
           
           n++;
           // Формеруем замену
           namb = '<span class="number_question">' + n;
           form_i = 'TestQuestion[' + n + ']';
           // Заменяем
           html_form = html_form.replace(regN_i,form_i); 
           html_form = html_form.replace(regN_g,namb); 
           

            // Добовляем форму в конец
            more_form.before(html_form);

            
        }
   });

Вот переделанный и доделанный код, тут я пошол другим путем, путем регулярных выражений типа: html_form = html_form.replace(regN_g,namb);
И формы добовлял не после всех форм, а перед элементом "Добавить еще форм".
Все работает, всем спасибо))


Часовой пояс GMT +3, время: 01:50.