マジで使わんよね。
やりたいこと
ContactForm7は送信完了時に画面遷移がない。
なので、①画面遷移させる。
フォームの送信は完了してるので、画面遷移した時にpostした値は持ち越さない。
だから、②postの情報を遷移先に持っていく。
こんな感じ
間違いなく指定できるようにCF7のショートコードに追記してidを付与する。
[contact-form-7 id="*******" title="*******" html_id="example"]フォームを設置したページで以下の内容を発火させる。
document.addEventListener('wpcf7mailsent', function (event) {
//遷移先の指定
const locationUrl = 'https://example.com/';
//フォームの各項目の値を配列に格納
const formFrom = document.getElementById('example');
let postData = {
example01: formFrom.elements['example01'].value,
example02: formFrom.elements['example02'].value,
example03: formFrom.elements['example03'].value,
example04: formFrom.elements['example04'].value,
};
//フォームを作って取得した値を格納して遷移先にpostする設定して設置
let form = document.createElement('form');
form.method = 'POST';
form.action = locationUrl;
for (let key in postData) {
if (postData.hasOwnProperty(key)) {
let input = document.createElement('input');
input.type = 'hidden';
input.name = key;
input.value = postData[key];
form.appendChild(input);
}
}
document.body.appendChild(form);
//作ったformをpostする
setTimeout(() => {
form.submit();
}, 0);
}, false);注意点:postの発火について
これは動かない。
document.addEventListener('wpcf7mailsent', function (event) {
⋮
form.submit();
}, false);こうじゃないとだめ。
document.addEventListener('wpcf7mailsent', function (event) {
⋮
setTimeout(() => {
form.submit();
}, 0);
}, false);多分仕様。
活用シーン
診断とか。
設問を解いて、回答内容をメールで飛ばす。
送信完了ページで診断結果を表示したい場合、入力内容を引っ張ってこないといけない。
そういう時とかに使えますね。

コメント