![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 122 Pomógł: 11 Dołączył: 24.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Mam problem z napisaniem działającej funkcji przy użyciu frameworka jQuery w wersji 1.3.2. Jej zadaniem ma być dynamiczne dodawanie 2 pól typu input i opcjonalnie ich kasowanie (name="cena[]" oraz name="rozmiar[]"). Na razie napisałem kod odpowiedzialny za dodawanie jednego inputa.
Kod <script type="text/javascript"> // <![CDATA[ $(document).ready( function() { $("#dodaj_cene").click(function() { var new_label = $("<label></label>"); var new_input = $("<input type=\'text\' name=\'cena[]\' />"); var new_link = $("<a></a>"); new_link.attr("href", "#"); new_link.html("usuń"); new_link.click(function() { $(this).parent("label").remove(); return false; }); new_label.append(new_input); new_label.append(new_link); $("form[name=formularz]").append(new_label); return false; }); }); // ]]> </script> Niestety po kliknięciu na link "Dodaj cenę" nic nie fuka, nic nie buczy. Pomoże ktoś? Usprawniłem nieco skrypt odpowiedzialny za dodawanie 2 dynamicznych inputów, ale kilka problemów zaprząta mi głowę. Po pierwsze po kliknięciu na link 'Dodaj cenę rozmiar' pojawiają się co prawda 2 dynamiczne inputy, tyle że pod formularzem (chciałbym aby wyświetlały się pod nazwą produktu). W dodatku trudność stanowi dla mnie usunięcie 2 niepotrzebnych inputów (na razie działa kasowanie tylko jednego inputa z rozmiarem). Nie jestem specjalistą od jQuery, więc proszę o wyrozumiałość i pomoc. Kod <script type="text/javascript"> // <![CDATA[ $(document).ready( function() { $("#dodaj").click(function() { var new_label1 = $("<label>Cena: </label>"); var new_label2 = $("<label>Rozmiar: </label>"); var new_input1 = $("<input type=\'text\' name=\'cena[]\' />"); var new_input2 = $("<input type=\'text\' name=\'rozmiar[]\' />"); var new_link = $("<a></a>"); new_link.attr("href", "#"); new_link.html("usuń"); new_link.click(function() { $(this).parents("label").remove(); return false; }); new_label1.append(new_input1); new_label2.append(new_input2); new_label1.append(new_link); new_label2.append(new_link); $("form[name=formularz]").append(new_label1); $("form[name=formularz]").append(new_label2); return false; }); }); // ]]> </script>
Ten post edytował Savage.Mephisto 28.07.2009, 08:51:31 -------------------- Myślisz, że przeżyjesz swoje życie w blasku i chwale...
Lecz jest coś, co zmieni ci cały świat... Szczerość! |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat 2 dynamiczne inputy, tyle że pod formularzem (chciałbym aby wyświetlały się pod nazwą produktu). Zapomniałeś chyba o tym, że wszystkie elementy objąłeś w fieldset. ;] Cytat W dodatku trudność stanowi dla mnie usunięcie 2 niepotrzebnych inputów (na razie działa kasowanie tylko jednego inputa z rozmiarem). Puść gdzieś to na żywo. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 122 Pomógł: 11 Dołączył: 24.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Erix, dzięki za jakiekolwiek zainteresowanie.
Działanie skryptu można zobaczyć pod adresem: http://www.stronyinternetowe.radom.pl/paola/new/index.php. Proszę o jakieś wskazówki, które pomogą mi poprawić wyżej wymieniony skrypt. -------------------- Myślisz, że przeżyjesz swoje życie w blasku i chwale...
Lecz jest coś, co zmieni ci cały świat... Szczerość! |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Ok, na pierwszy rzut oka wygląda to tak:
Link masz po prostu w jednym label, a po wskazaniu na parents() zwracany jest tylko on. Sąsiedniego (z drugim polem) już nie uzyskujesz. Swoją drogą, nie mogę pojąć jednego, czemu sobie tak utrudniasz życie: Kod var new_link = $("<a></a>"); new_link.attr("href", "#"); new_link.html("usuń"); Skoro i tak używasz innerHTML (vide: pierwsza linijka). Gdybyś robił w czystym DOM, to rozumiem - ale tutaj jest bez sensu. ![]() -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 122 Pomógł: 11 Dołączył: 24.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Erix, nie jestem alfą i omegą jeśli chodzi o pisanie skryptów przy wykorzystaniu jQuery. Zresztą wcześniej o tym wspomniałem. Stąd to utrudnianie sobie życia. Nie mam zielonego pojęcia, jak to ugryźć, aby kod był w pełni funkcjonalny.
-------------------- Myślisz, że przeżyjesz swoje życie w blasku i chwale...
Lecz jest coś, co zmieni ci cały świat... Szczerość! |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Najlepiej będzie po prostu jeden wiersz (z oboma polami, linkiem do kasowania) objąć w jakiegoś diva i to jego kasować, a nie każdego labela z osobna.
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 122 Pomógł: 11 Dołączył: 24.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Oki, to jeden problem z głowy. A jak w takim razie zmusić te dynamiczne inputy, aby ładowały się w formularzu pod polem nazwa? Wyrzucenie linka poza forma i fieldset nie dało oczekiwanych rezultatów.
-------------------- Myślisz, że przeżyjesz swoje życie w blasku i chwale...
Lecz jest coś, co zmieni ci cały świat... Szczerość! |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Ja nie pisałem, że trzeba poza, tylko w fieldset.
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 122 Pomógł: 11 Dołączył: 24.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dla zainteresowanych tematem.
Całkowicie od nowa napisałem skrypt i jego wersja finalna wygląda tak: Kod <script type="text/javascript"> // <![CDATA[ $(document).ready(function(){ $(\'#elements .element a\').live(\'click\', function(){ var parent = $(this).parent(); if($(\'#elements .element\').index(parent)>0) parent.remove(); return false; }); $(\'#add\').click(function(){ $(\'#elements .element:first\').clone().appendTo($(\'#elements\')).find(\'input\').val(\'\'); return false; }); }); // ]]> </script>
-------------------- Myślisz, że przeżyjesz swoje życie w blasku i chwale...
Lecz jest coś, co zmieni ci cały świat... Szczerość! |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.07.2025 - 22:55 |