Adott egy működő JavaScript kód, amit próbálok bevarázsolni Drupal alá.
A JS-kód a telepített Garmin Communicator plugin segítségével gombnyomásra felismeri a csatlakoztatott GPS-eszközt, másik gomb megnyomásával beolvassa a rajta lévő adatokat, további gombok megnyomásával pedig egy listába át lehet pakolni adott pontokat és nyomvonalakat, amiket majd később fel lehet tölteni.
Itt azt találtam, hogy az onclick kezelőbe return false-t kell beírni, ha azt akarom, hogy a gomb ne küldje be az űrlapot.
A fent linkelt kódban a this.addTrackButton.onclick, this.addWaypointButton.onclick stb. csak akkor nem küldte be az űrlapot, ha a fenti hivatkozás szerint a végére raktam egy return false-t. Ha az ezekből meghívott függvénybe tettem return false-t, úgy már nekem megint újratöltötte az oldalt. A this.findDevicesButton.onclick-re kattintva viszont nem kell return false, az űrlap nem töltődik újra (ez egyébként a this.plugin.StartFindDevices() függvényt hívja meg). A this.readDataButton.onclick még érdekesebb, ha az űrlap betöltése után kattintok rá közvetlen, akkor újratölti az oldalt, ha előtte rendesen kiválasztom a GPS-eszközt, akkor rákattintva betölti róla az adatokat az oldal újratöltése nélkül. Itt talán a break-ek miatt nem kerül sor a beküldésre. Ez amúgy egy másik fájlban lévő readDataFromDevice() függvényt hívja meg, onnan meg még egyéb függvényeket.
A kérdés az, hogy miért van ez a jelenség? Mi az a return false-on kívül, ami megakadályozza az oldal újratöltését? Tényleg a break-ek? A return false-t sem értem, hogy miért működik, de érdekelne, hogy mi történik a háttérben.
(A JS-kódot nem én írtam, és teszteléshez mindegyiket enabled-re állítottam.)