Sziasztok!
Egy olyan problémával küzdök hogy egy node beküldő formom, og_node_form.
Hozzáadtam egy egy saján javascriptet modullal:
function wwmap_form_alter(&$form, &$form_state, $form_id) { if ($form_id=='og_node_form'){ drupal_add_js(drupal_get_path('module', 'wwmap') . '/wwmap.js'); } }
Drupal.behaviors.wwmap = function(context) { $("#edit-field-hely-0-city").val($("#edit-field-locality-tids-hierarchical-select-selects-1 option:selected").html()); console.log('vvv'); }); }
Ebben van egy jquery click esemény a submit gombra, ami működik is mindaddíg míg valaki hibásan küldi be a formot mert amikor visszadob a drupal a validásás után onnantól kezdve nem működik.
Tudna ebben segíteni valaki, hogy mit kellene másképp csinálnom hogy rendesen működjön?
Előre is köszönöm.
Drupal verzió:
Fórum:
konzol?
Konzolon (F12, Ctrl+Shift+I) látszik valami hiba?
A kódodban meg ebben a formában szintaktikai hiba van, bár lehet, hogy csak a click esemény lezárásaként maradt ott a
});
, és ide csak a lényeget másoltad be.Ettől függetlenül az értékek felhasználása előtt nem árt leellenőrizni az elemek meglétét, pl. ezt is kiírathatnád console.log-ra, csak példakóddal:
A lényeg, hogy a validálás után csekkold le, hogy egyáltalán léteznek-e az elemek az oldalon, van-e konzolon hiba, stb.
Ja, meg most látom, hogy használod a :selected selectort. Biztos lehetsz benne egyáltalán, hogy valamelyik elem ki lesz választva?
Nem látom a markupodat meg a kódod egyéb részét, úgyhogy ezeket nem ártana tudni.
hiba
Igen csak a lényegi részét másoltam be a kódnak itt az egész.
A hiányzó változók hibáinak kikerülése érdekében szinte mindent kikommenteztem egyedül a click eseményt nem.
Az a fura hogy amúgy minden más végrehajtódik a validálás után is csak a click esemény nem.
Lehet hogy akkor amikor betöltődik a js akkor még nincs meg a submit gomb vagy mi lehet a baja?
Nincs amúgy hibaüzenet, és már csak a colnsol.log parancs van ami első körben működik is de ha visszadob az oldal hibákkal akkor utána már nem.
cél?
Ha a submit esemény bekövetkezik, akkor már küldi is a form tagnél megadott metódussal az adatokat az action attribútumnál megadott feldolgozó fájl felé.
Itt kérdés, hogy máshol pongyolán fogalmazva "megállítod-e" ezt a lap-újrafrissítős mechanizmust a böngészőnél, és mondjuk AJAX-szal küldöd-e tovább az adatokat.
JavaScripttel teljesen felülbírálhatod a form default "viselkedését", de ha kiszámíthatóvá akarod tenni, hogy még a form elküldése előtt milyen JavaScript-kód jusson egyáltalán érvényre, akkor azt annak megfelelően kell intézned.
Mi a célod?
Az, hogy egy esemény mindenképpen bekövetkezzen a form elküldése előtt? Ha így szeretnéd, akkor a submit gombra való click eseményre kötött függvénynél
return false;
-szal (meg létezik event.preventDefault()) kell visszatérni, hogy ne frissüljön az oldal; de előtte megcsinálni, amit még szeretnél, hogy bekövetkezzen a click eseményre - ha viszont utána mindenképp szeretnéd mégis elküldetni a formot, akkor callback-ként még mindig megadhatod azt, hogy a form legyen elküldve submit()-tel.Szóval mit szeretnél?
A hibakeresésben
talán segíthet:
http://stackoverflow.com/questions/570960/how-to-debug-javascript-jquery...
Pl. ez érdekesnek látszik: http://www.sprymedia.co.uk/article/Visual+Event
Az engem is érdekelne, hogy meg lehet-e nézni a felülírt eseménykezelőket valamilyen módszerrel, hasonlóan, ahogy a firebug is mutatja, a felülírt css szabályokat.
Megoldva
Helló!
Nem próbáltam ki ezt a debug cuccot de majd lehet hogy egyszer megteszem.
Köszönöm a hozzászólásokat.
Az volt acélom hogy egy legördülő mező értékét belmásoljam egy text mezőbe.
Végülés 2 dolgot változtattam:
másképp deklaráltam a js fájlt ez abban segített hogy a js fájl validálás után is fusson:
A clink esemény viszont nagyon fura mert a js minden része, click esemény is futott míg nem tért vissza a form hibával. Amikor visszatért akkor is futott a js de a click esemény már nem. Ez akkor gyógyult meg mikor módosítottam a selectort erről:
erre:
Talán más is kapott valami ilyen id-t vagy nem tudom, de lényeg hogy egyből megjavult.
Mégegyszer köszönöm mindenkinek!
ne az onClick-et figyeld
jó, hogy megjavult :)
annyival kiegészítem, hogy ne a submit gomb onClick-jét figyeld, mert a formot úgy is el lehet küldeni, hogy egy mezőjében enter-t nyomsz.
De van erre egy submit esemény, inkább azt figyeld:
http://api.jquery.com/submit/