Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Wywołanie funkcji
Forum PHP.pl > Forum > Przedszkole
krzesik
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....
trueblue
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?
Michur
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>
trueblue
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.