Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript]Wywołanie funkcji
krzesik
post
Post #1





Grupa: Zarejestrowani
Postów: 516
Pomógł: 1
Dołączył: 25.08.2012

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


Witam,
mam poprawnie działającą funkcję przeliczającą mi wartości w komórkach:
  1. function licz1(a){
  2. a.Plan100.value=(a.Ilosc100.value)*(a.Kwota100.value)
  3. a.Plan50.value=(a.Ilosc50.value)*(a.Kwota50.value)
  4. a.Plan25.value=(a.Ilosc25.value)*(a.Kwota25.value)
  5. }

przeliczanie działa poprawnie jak opuszczę komórkę:
  1. <input class="form-control col-xs-1" size="1" name="Kwota100" value="<? echo $KwotaPelna; ?>" type="text" onkeyup="licz1(this.form)"></input>


niestety nie zlicz mi na bieżąco po wejściu do formularza, ani gdy kwota się zmienia, jak to wywołać?
Próbowałem poprzez
<body onload="licz1(a)">
ale bez efektu....
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


A jest gdzieś zdefiniowana zmienna "a", że przekazujesz ją jako argument do funkcji licz1 w zdarzeniu onLoad dla <body>? Jestem pewien, że nie.

Swoją drogą, skoro do pól Ilość oraz Kwota "wpisujesz" wartości poprzez PHP, to dlaczego nie możesz "wpisać" również poprzez PHP wartości do pól Plan?

Ten post edytował trueblue 14.01.2025, 07:24:42


--------------------
Go to the top of the page
+Quote Post
Michur
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 14.01.2025

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


Moim zdaniem łatwiej to zrobić samym js, niż rozdzielać to na funkcje wstawione w HTML.
Osobiście zrobiłbym to trochę inaczej, no ale poniżej rozwiązuję Twój problem wink.gif

  1. <!DOCTYPE html>
  2. <head>
  3. window.onload = () => {
  4.  
  5. var a = document.querySelector('form');
  6.  
  7. function licz() {
  8.  
  9. a.Plan100.value=(a.Ilosc100.value)*(a.Kwota100.value)
  10. a.Plan50.value=(a.Ilosc50.value)*(a.Kwota50.value)
  11. a.Plan25.value=(a.Ilosc25.value)*(a.Kwota25.value)
  12.  
  13. }
  14.  
  15. var inputs = a.querySelectorAll('input');
  16. inputs.forEach((input) => {
  17. if(input.classList.contains('kwota')) {
  18. input.addEventListener('input', licz, false);
  19. }
  20. });
  21.  
  22. licz();
  23.  
  24. }
  25. </script>
  26. </head>
  27. <body>
  28. <form id="form">
  29. <input type="text" name="Plan100" class="plan" value="">
  30. <input type="text" name="Ilosc100" class="ilosc" value="12">
  31. <input type="text" name="Kwota100" class="kwota" value="100">
  32.  
  33. <input type="text" name="Plan50" class="plan" value="">
  34. <input type="text" name="Ilosc50" class="ilosc" value="12">
  35. <input type="text" name="Kwota50" class="kwota" value="50">
  36.  
  37. <input type="text" name="Plan25" class="plan" value="">
  38. <input type="text" name="Ilosc25" class="ilosc" value="12">
  39. <input type="text" name="Kwota25" class="kwota" value="25">
  40. </form>
  41. </body>
  42. </html>
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Dużo sprawniejsze byłoby rozwiązanie z delegacją zdarzeń i rozpoznawanie elementów na podstawie ich klas czy atrybutów id, dzięki któremu nie musimy się martwić w przypadku dodawania kolejnych inputów.


--------------------
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 Aktualny czas: 21.08.2025 - 15:46