Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jQuery] dodawanie inputów
colachips
post
Post #1





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 12.01.2009

Ostrzeżenie: (0%)
-----


Witam,

tworzę sobie skrypt ankiet, gdzie ankieta moze miec n pytań, każde pytanie zaś n odpowiedzi. Muszę jakoś dane pytanie i odpowiedzi do niego zgrupować, więc wpadłem na pomysł aby skorzystać z tablic. Tak to wygląda:

  1. <dl>
  2. <h2>Dodaj pytania</h2>
  3.  
  4. <dt><label for="questions[0][q]">Pytanie 1</label></dt>
  5. <dd><input type="text" name="questions[0][q]" id="questions[0][q]"></dd>
  6.  
  7. <dt><label for="questions[0][a][0]">Odpowiedź 1</label></dt>
  8. <dd><input type="text" name="questions[0][a][0]" id="questions[0][a][0]"></dd>
  9.  
  10. <dt><label for="questions[0][a][1]">Odpowiedź 2</label></dt>
  11. <dd><input type="text" name="questions[0][a][1]" id="questions[0][a][1]"></dd>
  12.  
  13. <a href="#" class="link_add_answer">Dodaj kolejną odpowiedź</a><br />
  14. <a href="#" class="link_add_question">Dodaj następne pytanie</a>
  15. </dl>


Chciałbym, korzystając z jQuery aby można było dodawać kolejne pytania i odpowiedzi. Moim celem jest stworzenie takiego kodu, który doda pytanie w takiej formie:

  1. ...
  2. <dt><label for="questions[1][q]">Pytanie 2</label></dt>
  3. <dd><input type="text" name="questions[1][q]" id="questions[1][q]"></dd>
  4.  
  5. <dt><label for="questions[1][a][0]">Odpowiedź 1</label></dt>
  6. <dd><input type="text" name="questions[1][a][0]" id="questions[1][a][0]"></dd>
  7.  
  8. <dt><label for="questions[1][a][1]">Odpowiedź 2</label></dt>
  9. <dd><input type="text" name="questions[1][a][1]" id="questions[1][a][1]"></dd>
  10.  
  11. <dt><label for="questions[1][a][2]">Odpowiedź 3</label></dt>
  12. <dd><input type="text" name="questions[1][a][2]" id="questions[1][a][2]"></dd>
  13.  
  14. <a href="#" class="link_add_answer">Dodaj kolejną odpowiedź</a><br />
  15. <a href="#" class="link_add_question">Dodaj następne pytanie</a>


Nie proszę o gotowca, chciałbym się czegoś nauczyć, dlatego jeśli ktoś może wskazać przynajmniej kierunek, w którym powinienem podążać, to będę wdzięczny. Mogę ewentualnie zapłacić, jesli ktoś ma coś gotowego (IMG:style_emoticons/default/smile.gif)

Pozdr.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
colachips
post
Post #2





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 12.01.2009

Ostrzeżenie: (0%)
-----


@kamil4u: proste dodawanie elementów umiem. Chodzi mi o bardziej kompleksowe podejście do problemu. Takie jak przedstawił @lukasz1985
@lukasz1985: bardzo mi się podoba taki pomysł. Gdzie zacząć żeby to ugryźć. Możecie coś polecić?

Dzięki

EDIT:

Jakoś sobie poradziłem. Uważam, że brzydko to rozwiązałem, ale na potrzeby chwili powinno wystarczyć.
Mam natomiast problem z czymś takim. Mam kod:
  1. <dl class="question">
  2.  
  3. <dt><label for="questions[0][q]">Pytanie 1</label></dt>
  4. <dd><input type="text" name="questions[0][q]" id="questions[0][q]"></dd>
  5.  
  6. <dt><label for="questions[0][a][0]">Odpowiedź 1</label></dt>
  7. <dd><input type="text" name="questions[0][a][0]" id="questions[0][a][0]"></dd>
  8.  
  9. <dt><label for="questions[0][a][1]">Odpowiedź 2</label></dt>
  10. <dd><input type="text" name="questions[0][a][1]" id="questions[0][a][1]"></dd>
  11.  
  12. <!-- tutaj chcę dodać kolejne pytanie -->
  13.  
  14. <dt><a href="#" class="link_add_answer">Dodaj kolejną odpowiedź</a></dt>
  15.  
  16. </dl>


I chcę dodać kolejne pytanie w miejscu komentarza. Próbowałem tak:
  1. $('.link_add_answer').click(function(){
  2. $(this).parents('dl.question').append(
  3. '<p>aaa</p>'
  4. );
  5. return false;
  6. });


To działa, ale tylko dla pierwszego <dl class="question">. Jak dodam kolejne pytania to w tamtych już nie działa (nic się nie dzieje po kliknięciu "Dodaj kolejną odpowiedź". Jak zatem znaleźć pierwsze "dl.question" (parent) dla klikniętego "link_add_answer"?

Ten post edytował colachips 24.02.2013, 23:03:43
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 12:39