Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [jQuery] Dodawanie nowego inputa
#luq
post 27.07.2009, 22:11:14
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:
  1. <div id="inputs">
  2. <div id="row1">
  3. <input type="text" name="element[1]" />
  4. <input type="text" name="elementId[1]" />
  5. </div>
  6. </div>

I po jego wypełnieniu dodawany jest kolejny, tzn do <div id="inputs"> na końcu dodawane jest:
  1. <div id="row2">
  2. <input type="text" name="element[2]" />
  3. <input type="text" name="elementId[2]" />
  4. </div>

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 winksmiley.jpg

Ten post edytował batman 28.07.2009, 07:56:41


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
vokiel
post 27.07.2009, 23:04:19
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));


--------------------
Go to the top of the page
+Quote Post
#luq
post 28.07.2009, 07:44:53
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
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 26.06.2025 - 18:02