![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Mam formularz w którym mogę dodać tablice pewnych danych tzn. np. zamawiane produkty: może ich być 0 jak i pińcet. Więc robię inputy dodawane przez JS`a. Jeśli user wypełni ostatni input dodaje się kolejny. W sumie aktualnie rozwiązywałem to tworząc nowe obiekty DOM i wrzucając je w odpowiednie miejsce. Dziś natknąłem się na kod który miałem przerobić a wykorzystywał on jQuery i metode clone(), dziwnie on działał, także nie będę tłumaczył. Przypuśćmy, że mam pierwszy input, np:
I po jego wypełnieniu dodawany jest kolejny, tzn do <div id="inputs"> na końcu dodawane jest: Jak już pisałem, aktualnie dodaje to tworząc przez JS`a nowe elementy Kod var oDiv = document.createElement( 'div' ); oDiv.setAttribute( 'id', 'row' + nextIndex ); [...] $('#inputs').append( oDiv ); I teraz pytanie czy jest możliwość napisania tego w taki sposób Kod var oDiv = $('#inputs:last-child').clone(); // pozamieniaj wszystkie wystąpienia 1 w oDiv na 2 $('#inputs').append( oDiv ); Mam nadzieje, że ktoś zrozumie mój bełkot ![]() Ten post edytował batman 28.07.2009, 07:56:41 -------------------- Moja gra - scraby.io
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Pobierasz attr('name'), następnie wyrażeniem sprawdzasz co jest pomiędzy [ i ] i dodajesz do tego +1, zmieniasz attr name w ostatnim.
W celu uproszczenia dodałbym atrybut rel równy id, temu co masz w nawiasie kwadratowym. Wtedy byś robił coś w ten deseń: Kod var last = $('#inputs:last-child');
var oDiv = last.clone(); var idx = last.attr('rel'); oDiv.attr('name').replace(idx,(idx+1)); -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Ok, tylko mi chodzi o coś w stylu - leć pętlą po dzieciach obiektu i pozmieniaj atrybuty id oraz name (jesli wystepuje w nich 1) na 2
Musze coś takiego zamienić na wersję 1++ Kod <div class="document_row ajax_row" id="row1">
<div class="document_field field_product"> <input autocomplete="off" id="line_1_product_name" class="productAutocomplete" type="text" name="form[line_1][idproduct_name]" /> <input autocomplete="off" id="line_1_idproduct" class="idproduct pzidproduct" type="text" name="form[line_1][idproduct]" size="3" /> </div> [...] </div> -------------------- Moja gra - scraby.io
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.06.2025 - 18:02 |