Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jQuery] Kilka formularzy na tej samej stronie, Takie same znaczniki, uniwersalność działania
markonix
post
Post #1





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Witam

Problem dosyć krótki i najlepiej na przykładzie:

  1. <input type="hidden" name="za_sztuke">
  2. <input type="text" name="ilosc">
  3. <input type="text" name="cena">
  4. </form>
  5.  
  6. <input type="hidden" name="za_sztuke" title="Tu ustalona będzie cena, różna za każdym razem">
  7. <input type="text" name="ilosc" title="Tu wpisze user ilość">
  8. <input type="text" name="cena" title="Tu wyświetli cene">
  9. </form>


Chce napisać kalkulator. Wykorzystam funkcje val() itp. i nie ma problemu dopóki na stronie nie pojawi się kilka tych samych formularzy o zbliżonej strukturze bez komplikowania sprawy różnymi id czy classami.
Jak mam odnieść się do jednego konkretnego formularza w jquery? Gdy wpiszę ilość w drugim formularzu to pobierze wartość 'ilosc' z drugiego, jak z pierwszego to z pierwszego.

Próbowałem z funkcją .next() np. .next(input[name=ilosc]) ale ta funkcja nie działa tak jakbym chciał, widocznie ma inne zastosowanie.

Oczekiwany rezultat osiągnąłem dzięki "eq" i index ale opieranie się o indeksy (po wpisaniu ilości pobiera wartość z inputu o index mniejszy o 1, i wpisuje wynik w input o index + 1) wydaje mi się mocno przekombinowanym sposobem i nie do końca uniwersalnym bo nie przewiduje innych pól pomiędzy i wymaga ustalania konkretnych indeksów, a ilość kodu jest bardzo spora.

Moje pytanie jak odnieść się do "aktywnego" (czyli coś analogicznego "this") formularza?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
sebekzosw
post
Post #2





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

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


$form = $(this).parent(); (aktywny formularz)

albo $('ID_FORM input[name=ilosc]').val();

można kombinować...

(nie wiem czy to działa!:

$(this.target).closest("form");

)
Go to the top of the page
+Quote Post
markonix
post
Post #3





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Cytat(sebekzosw @ 15.09.2010, 19:58:16 ) *
$form = $(this).parent(); (aktywny formularz)

albo $('ID_FORM input[name=ilosc]').val();

można kombinować...

(nie wiem czy to działa!:

$(this.target).closest("form");

)


Dzięki za pomoc ale jednak to nie to (nie działało albo po prostu nie umiałem tego zastosować).
Wykluczyłem też drugie "albo" bo chciałem zachować jak największą uniwersalność (bez nadawania ID każdemu z form).

Dla potomnych:

  1. function price_refresh(form) {
  2. var cena,sztuk,price;
  3. cena = $(form).find('[name=cena_za_sztuke]').val(); // hidden input
  4. sztuk = $(form).find('[name=sztuk]').val();
  5. price = cena * sztuk;
  6. $(form).find('[name=c_price]').attr('value', price); // wyświetl cenę
  7. }
  8.  
  9. $(document).ready(function(){
  10. $("input[name=sztuk]").keyup(function(){
  11. var form = this.form;
  12. price_refresh(form);
  13. });
  14. });


Wykorzystałem funkcję find. Przy zmianie wartości inputu "sztuk" wykonuje się funkcja price_refresh z argumentem "this.form".

Dam "Pomógł" żeby oznaczyć jako rozwiązane (IMG:style_emoticons/default/winksmiley.jpg)

Ten post edytował markonix 16.09.2010, 19:34:16
Go to the top of the page
+Quote Post

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: 23.08.2025 - 06:54