Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript]Wywołanie funkcji
krzesik
post 13.01.2025, 18:07:46
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
Michur
post 14.01.2025, 10:47:07
Post #2





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 14.01.2025, 16:48:05
Post #3





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

Posty w temacie


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: 14.08.2025 - 20:31