HubSpotフォームを使用していると、フォーム送信の前後で独自のJavaScriptを実行したい場合があります。
例えばフォームが表示されたら画面上の要素を変更したり、フォーム送信後にGoogle Analyticsにデータを送信したりなどです。
このような実装を行うにはフォームのイベントを知る必要があるので重要な部分をまとめました。
MessageEvent
とは、HubSpotのフォームが表示されたり、送信を行うとwindow
から発行されるイベントです。
以下のようにwindow.addEventListener
でリスナーを登録して使用します。
以下はconsole.log(event)
の中身で重要な部分だけ抜粋しています。
data
オブジェクトにはフォームのidやイベント状態が入っています。
type: "hsFormCallback"
でフォームから発行されたイベントであることが分かり、eventName
キーに様々な状態が入るので、この2つの条件でifを作ることになります。
ロード時と送信時でいくつかのイベントがあります。
イベントの呼び出し順で列挙していますが仕様変更で前後することがあると思います。
onBeforeFormInit
の部分を書き換えるだけです。HubSpot公式サイトの説明と殆ど同じ内容ですが、フォーム送信の前後で何かしたい場合に役立つフォームイベントの紹介でした。
もしHubSpotフォームの値を動的に変更したい場合や、高度なことを行いたい場合はこちらを参照すると解決するかもしれません。