Кто нибудь так делал?
Я написал скрипт по добовлению полей форм.
Есть система тестов при создании теста сразу выходят 10форм для 10 тестов, при нажатии на кнопку "еще" влазеет внизу еще 10 форм. Тут все работает. Но в каждой форме еще есть 5 вариантов ответа и кнопка "добавить вариант ответа" при нажатии которой добовляется еще одно поле для ответа в данную форму. Проблема в том что кнопка "добавить вариант ответа" не работает для новых созданных элементов. Вообще по идее она должн работать? Если да то как сделать чтоб она работала? Может есть функции по перестройки DOM дерева? А то плучается JS не видит добавленных кнопок.:help: |
Цитата:
Цитата:
|
Цитата:
var more_answer = $('.more_answer'); more_answer.click(function(){ alert('l'); }); я показываю)) <div class="question_item"> <div class="more_answer" > Добавить еще ответы </div> <div class="item_answer" ></div> <div class="item_answer" ></div> <div class="item_answer" ></div> <div class="item_answer" ></div> <div class="item_answer" ></div> <div class="else"></div> </div> Что удивительно функция работает для старых форм, а для новых не работает(( |
Цитата:
При таком назначении обработчика он ну никак больше нигде не появится... |
Цитата:
Весь скрипт таков $(document).ready(function(){ // Добовление формы еще // Кнопка 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); //alert(html_form); // Добовляем форму в конец more_form.before(html_form); } }); // Ответы еще // Кнопка var more_answer = $('.more_answer'); // Колличество форм уже существующих - номера форм var m = 5; // То что нужно заменить в форме чтоб она отсылала нужные пост данные var regN_a = /class="number_answer">#1/g; var regN_if = /\[answer\]\[1\]/g; // Функция при клике на кнопку добовления форм еще more_answer.click(function(){ // Заносим в переменную форму для клонирования var item_form_a = $(this).next('.item_answer'); var html_form_a = item_form_a.html(); //alert(html_form_a); m++; // Формеруем замену namb_a = 'class="number_question">#' + m; form_i_a = '[answer][' + m + ']'; // Заменяем html_form_a = html_form_a.replace(regN_if,form_i_a); html_form_a = html_form_a.replace(regN_a,namb_a); //alert(html_form_a); // Добовляем форму в конец var else_a = $(this).nextAll('.else'); else_a.before(html_form_a); }); }); //Конец ready а вот весь HTML страницы <div id="content"> <script type="text/javascript" src="/css/form_question.js"></script> <h1>Создание вопросов для теста</h1> <div class="form"> <form id="test-question-form" action="/admin/testquestion/create/id/61" method="post"> <div class="question_item"><div class="question_item"> <hr /> <span class="number_question">1</span> <label for="TestQuestion_1_question" class="required">Вопрос <span class="required">*</span></label> <div class="row"> <textarea rows="1" cols="20" name="TestQuestion[1][question]" id="TestQuestion_1_question"></textarea> </div> <div class="more_answer" > Добавить еще ответы </div> <div class="item_answer" ><div class="item_answer" > <span class="number_answer">#1</span><br /> <textarea rows="1" cols="6" name="TestQuestion[1][answer][1][answer]" id="TestQuestion_1_answer_1_answer"></textarea> <input id="ytTestQuestion_1_answer_1_true" type="hidden" value="0" name="TestQuestion[1][answer][1][true]" /><input name="TestQuestion[1][answer][1][true]" id="TestQuestion_1_answer_1_true" value="1" type="checkbox" /> </div></div> <div class="item_answer" ><div class="item_answer" > <span class="number_answer">#2</span><br /> <textarea rows="1" cols="6" name="TestQuestion[1][answer][2][answer]" id="TestQuestion_1_answer_2_answer"></textarea> <input id="ytTestQuestion_1_answer_2_true" type="hidden" value="0" name="TestQuestion[1][answer][2][true]" /><input name="TestQuestion[1][answer][2][true]" id="TestQuestion_1_answer_2_true" value="1" type="checkbox" /> </div></div> <div class="item_answer" ><div class="item_answer" > <span class="number_answer">#3</span><br /> <textarea rows="1" cols="6" name="TestQuestion[1][answer][3][answer]" id="TestQuestion_1_answer_3_answer"></textarea> <input id="ytTestQuestion_1_answer_3_true" type="hidden" value="0" name="TestQuestion[1][answer][3][true]" /><input name="TestQuestion[1][answer][3][true]" id="TestQuestion_1_answer_3_true" value="1" type="checkbox" /> </div></div> <div class="item_answer" ><div class="item_answer" > <span class="number_answer">#4</span><br /> <textarea rows="1" cols="6" name="TestQuestion[1][answer][4][answer]" id="TestQuestion_1_answer_4_answer"></textarea> <input id="ytTestQuestion_1_answer_4_true" type="hidden" value="0" name="TestQuestion[1][answer][4][true]" /><input name="TestQuestion[1][answer][4][true]" id="TestQuestion_1_answer_4_true" value="1" type="checkbox" /> </div></div> <div class="item_answer" ><div class="item_answer" > <span class="number_answer">#5</span><br /> <textarea rows="1" cols="6" name="TestQuestion[1][answer][5][answer]" id="TestQuestion_1_answer_5_answer"></textarea> <input id="ytTestQuestion_1_answer_5_true" type="hidden" value="0" name="TestQuestion[1][answer][5][true]" /><input name="TestQuestion[1][answer][5][true]" id="TestQuestion_1_answer_5_true" value="1" type="checkbox" /> </div></div> <div class="else"></div> </div></div> <div class="question_item"><div class="question_item"> <hr /> <span class="number_question">2</span> <label for="TestQuestion_2_question" class="required">Вопрос <span class="required">*</span></label> <div class="row"> <textarea rows="1" cols="20" name="TestQuestion[2][question]" id="TestQuestion_2_question"></textarea> </div> <div class="more_answer" > Добавить еще ответы </div> <div class="item_answer" ><div class="item_answer" > <span class="number_answer">#1</span><br /> <textarea rows="1" cols="6" name="TestQuestion[2][answer][1][answer]" id="TestQuestion_2_answer_1_answer"></textarea> <input id="ytTestQuestion_2_answer_1_true" type="hidden" value="0" name="TestQuestion[2][answer][1][true]" /><input name="TestQuestion[2][answer][1][true]" id="TestQuestion_2_answer_1_true" value="1" type="checkbox" /> </div></div> <div class="item_answer" ><div class="item_answer" > <span class="number_answer">#2</span><br /> <textarea rows="1" cols="6" name="TestQuestion[2][answer][2][answer]" id="TestQuestion_2_answer_2_answer"></textarea> <input id="ytTestQuestion_2_answer_2_true" type="hidden" value="0" name="TestQuestion[2][answer][2][true]" /><input name="TestQuestion[2][answer][2][true]" id="TestQuestion_2_answer_2_true" value="1" type="checkbox" /> </div></div> <div class="item_answer" ><div class="item_answer" > <span class="number_answer">#3</span><br /> <textarea rows="1" cols="6" name="TestQuestion[2][answer][3][answer]" id="TestQuestion_2_answer_3_answer"></textarea> <input id="ytTestQuestion_2_answer_3_true" type="hidden" value="0" name="TestQuestion[2][answer][3][true]" /><input name="TestQuestion[2][answer][3][true]" id="TestQuestion_2_answer_3_true" value="1" type="checkbox" /> </div></div> <div class="item_answer" ><div class="item_answer" > <span class="number_answer">#4</span><br /> <textarea rows="1" cols="6" name="TestQuestion[2][answer][4][answer]" id="TestQuestion_2_answer_4_answer"></textarea> <input id="ytTestQuestion_2_answer_4_true" type="hidden" value="0" name="TestQuestion[2][answer][4][true]" /><input name="TestQuestion[2][answer][4][true]" id="TestQuestion_2_answer_4_true" value="1" type="checkbox" /> </div></div> <div class="item_answer" ><div class="item_answer" > <span class="number_answer">#5</span><br /> <textarea rows="1" cols="6" name="TestQuestion[2][answer][5][answer]" id="TestQuestion_2_answer_5_answer"></textarea> <input id="ytTestQuestion_2_answer_5_true" type="hidden" value="0" name="TestQuestion[2][answer][5][true]" /><input name="TestQuestion[2][answer][5][true]" id="TestQuestion_2_answer_5_true" value="1" type="checkbox" /> </div></div> <div class="else"></div> </div></div> <div class="more_item"> <br clear="all"/> <p>Еще формы</p> </div> <div class="row buttons"> <input type="submit" name="yt0" value="Сохранить" /> </div> </form> </div> </div> Я просто не хотел выкладвать кучу кода, а показать суть)) |
Цитата:
|
Извеняюсь. Вот я выложил все в архиве, посмотрите пожалуйста http://narod.ru/disk/30482717001/с�...�ов.rar.html
|
Kuklavod, я архивы не качаю... Но рассмотрю простенький пример который можно выложить прямо тут. И даже запустить на исполнение... ;)
Как делать примеры я тебе уже показывал в ответах на твои же сообщения... Т.ч. дерзай! :) |
Кажется я уже нашел ответ))
вместо more_answer.click(function(){ Нужно использовать more_answer.live('click', function(){ или же обработчик событий .delegate() Сейчас уже вновь созданные кнопки с этим обработчиком работают)) |
Значит таки внял... :)
Цитата:
|
Часовой пояс GMT +3, время: 14:41. |