[JS] Warunkowa sumowanie pól w formularzu


(Lukpio3) #1

Witam Serdecznie.

Tworzę właśnie w Adobe XI Pro formularz i mam pewien problem. Muszę napisać funkcję w js która będzie mi sumowała wartości wpisywane do pól tekstowych i wynik przekazywała do jednego z 2 pól tekstowych w których wyświetlany będzie wynik tylko z takim warunkiem że np jeśli przy polu gdzie będzie wpisywana liczba, zostanie zaznaczone pole wyboru nr 1 to wynik przekazany zostanie do pola tekstowego nr 1, jeśli zaznaczone zostanie pole wyboru nr 2 to wynik zostanie wysłany do pola tekstowego nr 2.

Może trochę to zobrazuję. Pod spodem zamieszczam nazwy pól tekstowych wraz z nazwami pól wyboru.

Text1 Grupa1 Wybór1 Grupa1 Wybór2

Text2 Grupa2 Wybór1 Grupa2 Wybór2

Text3 Grupa3 Wybór1 Grupa3 Wybór2

Text4 Grupa4 Wybór1 Grupa4 Wybór2

Text5 Grupa5 Wybór1 Grupa5 Wybór2

Text6

Text7

Tak to wygląda. Pola wyboru są podzielona na grupy. I teraz moje sumowanie ma wyglądać jak napisałem wyżej czyli: wpisujemy do pola Text1 jakąś wartość i zaznaczamy powiedzmy pole wyboru 1 z grupy 1. Wynik automatycznie wpisywany jest do pola Text6, Następnie np wpisujemy wartość w Text2 i również zaznaczamy Wybór1 z grupy2, wartość ta dodawana jest do pierwszej wartości i wyświetlana w polu Tex6. Później powiedzmy w Text3 wpiszemy sobie jakąś wartość i zaznaczymy pole wyboru 2 z grupy 3 to taka wartość ma już być wyświetlana w Text7.

Bardzo proszę o pomoc w napisaniu takiego skryptu. Niestety dopiero się uczę i js i tego programu Adobe do tworzenia formularzy i brak mi doświadczenia. Liczę na pomoc

Pozdrawiam.

-----EDIT-----

Jeszcze może dodam że u mnie problem nie polega na samym napisaniu funkcji bo programuję trochę w innych językach więc ogólne podstawy znam. Problem jest w tym jak mam się odwołać do tych pól wyboru bo o ile pola tekstowe mają swoje nazwy typu Text1 Text2 o tyle pola wyboru są podzielona na grupy i w każdej grupie są po 2 wybory czyli wybór1 i wybór2 i nie wiem jak się do tego odwołać.

Bo generalnie myślałem nad czymś takim:

if (nazwa_pola_wyboru1 && nazwa_pola_wyboru2 && nazwa_pola_wyboru3 && nazwa_pola_wyboru4)

    then

    ... i tu daję akcje czyli sumuję wartości z poszczególnych pól tekstowych

Tylko nie wiem jak odwołać się do konkretnego pola wyboru :frowning:


(Pablo_Wawa) #2

Czy używasz jakiejś biblioteki JavaScript w swojej aplikacji, czy bazujesz na "czystym" JS?

Aby prosto odwoływać się do danego pola, warto nadać im (koniecznie unikalne!) id.

Przyda Ci się też prosta funkcja:

function $(id)

{

  return document.getElementById(id);

}

a używasz jej tak:

var val1=$("pole1").value;

gdzie pole1 to id pola liczbowego, w zmiennej val1 masz wartość tego pola (jako tekst), do sumowania użyj

var val1=parseFloat($("pole1").value);

o ile jesteś pewny, że w polu jest liczba (z kropką jako znakiem dziesiętnym).


(Lukpio3) #3

Dziękuję za odpowiedź. Już myślałem że nikt nie odpowie :(. Właśnie w zwykłym JS jakiego używa się na stronach www bez problemu bym sobie z tym poradził. Tam każde pole ma jak napisałeś swoje unikalne ID po którym można się do niego odwołać. Z bibliotek żadnych nie korzystam, czysty JS.

Pola w adobe wstawia się z ręki. Wygląda to tak jak napisałem powyżej, pola są posegregowane na grupy a w grupach mają nazwy typu Wybór1 Wybór2. Grupy są po to że mając zaznaczone jedno pole w danej grupie i chcąc zaznaczyć drugie, to pierwsze mi się odznacza. Tak to działa.

We właściwościach pola jako nazwę mam podaną grupę, czyli np: Nazwa: Grupa1, natomiast przy etykiecie: "Wybór przycisku radio" mam Wybór1. Jak się do konkretnego pola odwołać nie mam bladego pojęcia. Szukam na różnych forach adobe i też wszędzie milczą.


(Pablo_Wawa) #4

Ja akurat w ogóle nie znam się na programach Adobe, więc nie wiem, jak dokładnie to wszystko wygląda.

W JavaScript można się do każdego pola dostać, ale trzeba znać jego hierarchię (i nazwę) w formularzu, ale te Twoje wyjaśnienia tego nie precyzują. Możesz wkleić ten formularz (uproszczony) tutaj (mam nadzieję, że jest to tekst)? Ale tylko tę część dotyczącą tych pół (jeśli masz w nim coś więcej, to nie będzie to raczej potrzebne).


(Lukpio3) #5

Z wklejeniem będzie problem ponieważ nawet jak to zrobię to i tak nic nie zobaczysz ponieważ aby mieć podgląd tego wszystkiego tzn opcji itd trzeba posiadać pakiet adobe XI pro do tworzenia formularzy. Bez tego otworzy Ci się jako zwykły pdf gdzie będzie możliwość jedynie wypełnienia pól, nic więcej.


(Pablo_Wawa) #6

Tak myślałem, więc to nie ma sensu. A czy w tym programie Adobe masz możliwość pisania ręcznie kodu JavaScript? Może jest tam jakaś pomoc, tutorial? Chyba można tam używać specjalnych funkcji - znalazłem taki fragment: http://stackoverflow.com/questions/12927066/adobe-acrobat-xi-pro-javascript

Tam funkcja getField to odpowiednik funkcji $ którą napisałem powyżej.

Kolejny link: http://forums.adobe.com/message/4741204

-- Dodane 11.11.2012 (N) 11:49 --

Tutorial: http://www.adobe.com/accessibility/products/acrobat/pdf/acrobat-x-creating-accessible-pdf-forms.pdf


(Lukpio3) #7

Możliwość pisania ręcznie właśnie jest ale teraz to trochę ja pomieszałem. Nie chodzi mi o checkboxa. Zrobiłem błąd. Chodzi mi o przycisk option button czyli przycisk opcji. :oops:


(Pablo_Wawa) #8

Może te linki, które Ci podałem powyżej, będą pomocne. Więcej nie bardzo jestem w stanie pomóc.