Számolás

osimester képe

Üdv Mindenkinek!

Kérném a segítségetek:

Szeretnék számolni a webform (6.x-3.18) egyik mezőjében. Egy szerződés kitöltését a webform-al oldottam meg és van egy mező melynek kitöltésével szeretném, másik három mező értékét kiszámolni.

Az igazán jó megoldás az lenne, ha valahogy az aktuális euró árfolyamot is bele tudnám építeni a számításokba, de ezt akár kézzel is felvihetem.

Már két napja kutatok a megoldás után itt is és a drupal.org-on is, de vagy rossz szavakkal kerestem, vagy ez egy egyszerű probléma, aminek még nem ismerem a megoldását.

Ha tudtok kérlek segítsetek!

Üdv!

OSI

U.i.: drupal verzió: 6.26

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
eager képe

  1. $('#kiindulo-textfield').live('change', function () {
  2.  
  3. // 1. szamolas
  4.  
  5. // 2. ertekadas a masik mezoknek az eredmeny alapjan
  6.  
  7. });

Én egy efféle jquery megközelítéssel próbálkoznék először. A .live('change') textfield esetében akkor kerül meghívásra, ha a user beleír valamit a textfieldbe (tehát a fenti függvényben kiszámolt adat beírást követően azonnal feltűnik a szükséges mezőkben, illetve ha módosítja a felhasználó a kiinduló értéket, akkor újraírja a másik textfieldeket is).

Nem próbáltam élesben pont ezt (drupalon még hasonlót sem), csak esélyesnek érzem.

Arra figyelned kell, hogy a D6 éppen milyen verziójú jqueryt használ, mert a .live() helyett régen volt más, ma meg megint van inkább más:
http://api.jquery.com/live/

Másik fontos kérdés: nem pontosan ismerem a drupal form validálási eljárásait, remélem ez nincs konfliktusban azzal (elvileg miért is lenne). Meg kell próbálni :)

UPDATE:

Sima .change() még jobbnak tűnik:

  1. $('#kiindulo-textfield').change(function () {
  2. // dolgok
  3. });

http://api.jquery.com/change/

UPDATE2:

Működő demo a jsfiddle.net-en. van még mit finomítani (pl. form validálás hogy csak számot fogadjon el kiindulásnak), de az elv látható.

Abban én is kérnék segítséget, hogy hogy lehetne elérni, hogy elkattintani se kelljen a mezőből, hanem eleve a beírást követően (továbbra is a mezőben állva) meghívódjon a callback?

1
0
eager képe

A továbbgondolt megoldás kulcsát a bindWithDelay jquery plugin jelentette, amit ezúttal csak beledobtam a .js elejére, gondolom szebben is lehet.

A kérdés, hogy a D6 milyen verziójú jQueryt használ, milyen libek backward-kompatibilisek hozzá.

Mindenesetre ha modernebb megoldások vannak csak kéznél, akkor elvileg lehet puhatolózni a jQuery multi modullal, gondolom (csak óvatosan, legyen előtte mentés).

Ez az egy lépcsővel alaposabban kimódolt megoldás mindenesetre 1.7.2.-es jQuery-vel megy:

http://jsfiddle.net/DaYqn/9/

Productionba biztos nem ajánlanám még (főleg mert jquervel még "I have no idea what I'm doing"), de ötletadó mintának elmegy :D

0
0
osimester képe

Köszönöm a segítséget ... nem gondoltam, hogy ilyen megoldás fog érkezni rá, de nagyon tetszik!

Megnézem milyen jQuery van most a drupal-ba, de ha más nem berakom és lássuk mi lesz. :)

Írok hogy sikerült.

0
0