【Studio】フォーム入力後に確認画面を表示させる方法

Studioの標準機能では、フォーム入力後に確認画面を表示することはできません。

ですが、有料プランで使えるカスタムコード機能を使えば、確認画面を実装することも可能です。

そこで今回は、「フォーム入力→確認画面→送信」といった流れでお問い合わせできるフォームを作成していきます。完成イメージは、下記のとおりです。

今回紹介する実装方法は、「フォームの確認画面を実装 | Studio Community Japan」を参考にさせていただいています。

難易度は高めであるため、事前にバックアップ取得は行っておきましょう。

また当メディアでは、確認画面以外にも「自動返信メール」や「日付選択カレンダー」などのフォームカスタマイズについても紹介しています。

カスタマイズしたい方は、ぜひ以下の記事もご覧ください。

Service
【最安15万円〜】
全てセット料金のホームページ制作サービス

サイト企画〜公開まですべてセット料金になっており、「余計な料金は一切いただかない」というのをモットーにしています。

最安15万円〜からホームページが作れて、すべてオリジナルデザインで制作可能です。また自社管理できる「Studio」というツールを用いているので、プランによっては維持費0円で運営できます。

期間限定で制作費用の3万円割引キャンペーンもやっていますので、ぜひお気軽にご相談ください!

目次

確認画面を実装できる対象プラン

今回紹介する方法は、「カスタムコード」を用いてフォーム入力後の確認画面を導入していきます。

カスタムコードは有料プランのみ使用できますので、今回の対象者はMiniプラン以上の方となります。

FreeMiniPersonalBusiness
カスタムコードの可否

Studioの無料プランを利用としている方は対象外になるため、ご注意ください。

Studioの無料プランでできること・できないことについては、以下の記事で詳しく解説しています。

フォーム送信前に確認画面を出す実装手順

Studioの有料プランに契約していないと実装できません。どの料金プランにしようか悩んでいる方は、「【最新版】STUDIOの料金プランの完全ガイド!6種類を比較してみた」をご覧ください。

フォーム送信前に確認画面を出す実装手順は、下記のとおりです。

それぞれ具体的に説明します。

①:お問い合わせフォームを作成する

左メニューから「追加」→「ボックス」→「Form1」を選択します。

デフォルトだと英語仕様になっているので、「Name→お名前」のように日本語に変更していきます。またプライバシーポリシーは邪魔なので、一旦削除します。

下記のような形になっていればOKです。

名前・メールアドレスが正しく入力されなかった時にエラーメッセージが出るように、入力欄の下にテキストを用意しておきます。

次に、ボタンを用意します。

左側ボタンは<button>タグ以外で作成して、右側ボタンは<button>タグで作成します。そしてボタン2個を選択した状態で、グループ化しておきます。

次に、確認画面へアクセスする用のボタンを作成します。

<button>タグ以外でボタンを作る、かつフォームの外側でボタンを作成するようにしましょう。

これでお問い合わせフォームの外観はほとんど完成しました。次は、各要素にIDを付与していきます。

Kaji

上記はほんの一例です!メールアドレスの入力欄、エラーメッセージなど、それぞれにIDを付与しましょう!

お名前〜お問い合わせ内容のフォーム部分をグループ化して、「input」というIDを付けておきます。

エラーメッセージ、修正・送信ボタンは、最初から表示する必要はないので非表示にしておきます。

②:カスタムコードを挿入する

次に、カスタムコードを挿入します。

問い合わせフォームを設置しているページの、ページ設定マークをクリックします。

カスタムコードの<body>内の末尾を開いて、下記2つのコードを貼り付けます。

◼︎CSS(お問い合わせフォーム)

<style>
  input.error {
    border-color: #BD332C !important;
    background-color: #F8D8D7 !important;
  }
  
  input.error::placeholder {
    color: #BD332C !important;
}
</style>

◼︎Javascript(お問い合わせフォーム)

<script>
  

document.addEventListener("keydown", function(event) {
    if (event.key === "Enter") {
        event.preventDefault();
    }
});

// 確認画面へ表示する要素のID名
const target = ['name', 'email', 'comment'];
// 入力必須要素のID名
const isRequired = ['name', 'email'];

// 確認ボタンクリック時の処理
document.getElementById('c-btn').addEventListener('click', () => {
    let inputVal = true;
    // 必須項目のループ
    for (const elem of isRequired) {
        // 必須項目の値が空の場合の処理
        if(document.getElementById(elem).value === '') {
            inputVal = false;
            document.getElementById(elem).classList.add('error');
            document.getElementById('error-'+elem).style.display = 'block';
        // 値が存在する場合の処理
        } else {
            document.getElementById(elem).classList.remove('error');
            document.getElementById('error-'+elem).style.display = 'none';
        }
        // ID名がemailの場合の処理
        if(elem == 'email') {
            // メールアドレスの形式であるかのチェック
            if(!document.getElementById(elem).value.match(/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/)) {
                inputVal = false;
                document.getElementById(elem).classList.add('error');
                document.getElementById('error-'+elem).style.display = 'block';
            }
        }
    }

    // 必須項目チェックが全て通った場合の処理
    if(inputVal) {
        // 確認画面へ表示する要素のループ
        for (const elem of target) {
            // 確認画面の要素へテキストをセット
            document.getElementById('c-'+elem).textContent = document.getElementById(elem).value;
        }
        document.getElementById('btn').style.display = 'flex';
        document.getElementById('input-check').style.display = 'flex';
        document.getElementById('c-btn').style.display = 'none';
        document.getElementById('input').style.display = 'none';
        window.scrollTo(0, 0);
    }
});

// 戻るボタンの処理
document.getElementById('fix-btn').addEventListener('click', () => {
    document.getElementById('btn').style.display = 'none';
    document.getElementById('input-check').style.display = 'none';
    document.getElementById('c-btn').style.display = 'block';
    document.getElementById('input').style.display = 'flex';
    window.scrollTo(0, 0);
});

  </script>

下記のように、コードを2個に分けて入力するようにしましょう。

一度サイトを更新してみて、公開サイトで動作確認をしてみましょう。

これまでの手順を間違えることなく進めていれば、下記のような感じになるはずです。

③:確認画面を作成する

次に、確認画面を作成していきます。

まず、確認画面の外観を作っていきます。今回は「お名前」、「メールアドレス」、「お問い合わせ内容」のフォームなので3項目を用意していきます。

Kaji

先ほど作ったフォームの上部分に、確認画面を作成していきます!

外観ができたら、「お名前」、「メールアドレス」、「お問い合わせ内容」の要素をすべてグループ化して、「input-check」というIDを付与します。

「Type Something」となっている部分に、それぞれIDを付与します。

これで確認画面の実装は完了です!

サイトを更新して、公開サイトで確認してみましょう。しっかり実装できていれば、下記のように確認画面が出てくるはずです。

Studioでのサイト制作は「Terace」にお任せ!

Kaji

「デザイナー」と「フロントエンジニア」のフリーランス3名で運営しています!

サービスの特徴
  • ポッキリ価格でホームページを制作できる
  • 専属デザイナーが完全オリジナルのデザイン作成
  • 納品後1ヶ月間は無料の電話サポートあり
  • 自社更新できるホームページが作れる
  • ホームページ制作期間中は何度でも無料相談できる
  • 顔の出ているフリーランス3人が運営
  • 維持費0円でホームページを運営できる

料金プランは、以下の通りです。

ポッキリ価格でホームページが作れるサービスであり、個人事業主中小企業からよく選ばれています。サービス利用者の声を聞きたい方は、ぜひ以下のインタビュー記事をご覧ください。

今だけ、毎月3組まで制作費用が3万円割引になるキャンペーンを行っています。

先着順で締め切るので、気になる方はぜひお早めにお問い合わせください!

ebook
【無料のお役立ち資料】
初ホームページ制作のよくある質問集

ホームページ制作に関するよくある質問14選にすべて答えています。

「自作するべきなのか」か「Web制作会社に任せるべきか」など、これまでホームページ制作をやっていく中で1番よく受けた質問を厳選しています。

無料でダウンロードできるので、これからホームページを作成する予定の方はぜひ参考にしてみてください!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事の執筆者

同志社大学を卒業後、新卒でレバレジーズ株式会社に入社。現在はメディア責任者をやりながら、Terace(テラス)のフロントエンドエンジニアとして活動しています。企業と提携してSEOコンサルなどもやっています。SEO検定1級保有

目次