Version 15 (modified by MK, 12 years ago)

--

Skrypty dla formularzy

Dla definiowalnych pól formularzy (cech) można stosować skrypty które rozszerzą standardowe możliwości formularzy. np. przeliczą dane z pól, zainicjują wartościami, ostrzegą o nieprawidłowej wartości itp.

Na początek garść przykładów:

onopen dla cechy typu "Kontakt". Ustawiamy wartość domyślną tylko na otwarciu nowego dokumentu:

if (('{FEATID:108}' === '') && {DIALOG_IS_NEW}) eval({$FEATID:108}.id+'_selectID(10039);');

onchange dla cechy typu select ({$FEATID:113}):

if ({$FEATID:113}.value == '78') {
$({$FEATID:111}.id+'_75_chk').checked=true;
$({$FEATID:111}.id+'_76_chk').checked=false;
eval({$FEATID:108}.id+'_selectID(10039);');
} else {
$({$FEATID:111}.id+'_75_chk').checked=false;
$({$FEATID:111}.id+'_76_chk').checked=true;
}

zaznacza checkboxy dla checklisty i dla wartosci 78 oraz
ustawia dla cechy {$FEATID:108} kontakt o id = 10039
{$FEATID:108} - jest reprezentowany przez komponent (HTMLElement) wyboru kontaktu

onfocus dla pola tekstowego ({$FEATID:110}) sumuje wartość z dwóch innych pól tekstowych:

{$FEATID:110}.value = parseFloat2({$FEATID:104}.value) + parseFloat2({$FEATID:109}.value);

Użycie SQL:

{$FEATID:115}.value = '{SQL::SELECT name_1 FROM contacts WHERE contid = {contid}}';

Wybór elementu z listy rozwijalnej na podstawie wartości z pola tekstowego innej cechy (skrypt umieszczamy w akcji onChange dla cechy o identyfikatorze 110):

if (parseFloat2({$FEATID:110}.value) > 10000) {
    SS({$FEATID:115}, 2);
}

Krótki opis zdarzeń

  • onBlur - zachodzi, gdy opuszczamy obiekt (przejście na inny obiekt
  • onChange - zachodzi, gdy opuszczamy obiekt, którego zawartość została zmieniona
  • onClick - zachodzi, gdy naciśniemy przycisk myszki na obiekcie
  • onFocus - zachodzi, gdy wchodzimy na obiekt (kursorem, ale również tabulatorem)
  • onKeyDown - zachodzi, gdy wciśniemy klawisz na klawiaturze
  • onCreate - zachodzi, za każdym razem gdy generuje się HTML pola
  • onOpen - zachodzi gdy otwiera się formularz (ale tylko raz, ponowne odświeżenie strony nie wywoła tego zdarzenia)