ハウツー

フォームを無効化して共有する方法

レビュー用にHTMLを共有する際、フォームが有効なままだとレビュアーが誤送信するリスクがある。フォームを無効化してから共有する方法は複数あり、使うケースによって最適な手法が異なる。代表的な3つの方法とその使い分けを解説する。

準備するもの

フォームを無効化する方法を選ぶ前に、共有の目的を明確にする。「フォームのデザインだけ確認してほしい」なら外観を保ったままsubmitだけ止めるJavaScript無効化が適切だ。「フォームの存在自体をチェックしてほしい」ならCSSで操作不能にする方法が視覚的にわかりやすい。

HTML内のフォームが何個あるかをエディタで「<form」を検索してカウントしておく。ページによっては検索フォーム・問い合わせフォーム・ニュースレター登録フォームが混在していることがある。全てのフォームを対象に無効化処理を適用する必要があるため、見落としを防ぐためにもカウントを先に行う。

無効化後にローカルで動作確認してから共有する。開発者ツールのコンソールで「Form submitted」などのログが出ないことを確認し、送信ボタンを押しても何も起きない状態をテストしてからギガサイト便にアップロードする。

  • 相手がログインなしで開ける状態か確認する
  • PCとスマホで最低1回ずつ表示を確認する
  • 内部情報・個人情報・不要な外部送信が残っていないか見る
  • レビュー期限と修正時の差し替え方を決めておく

実際の手順

最もシンプルな方法は、HTML内のすべての<form>タグのaction属性を削除し、代わりにsubmitイベントを止めるJavaScriptを1行追加する方法だ。具体的には</body>の直前に<script>document.querySelectorAll('form').forEach(f=>f.addEventListener('submit',e=>e.preventDefault()));</script>を追記する。これで全フォームの送信が無効化される。

CSSで操作自体を禁止する方法は<style>form{pointer-events:none;opacity:0.6;}</style>をheadに追加するだけだ。フォームがグレーアウトされて「触れない」ことが視覚的に明確になり、レビュアーが誤操作するリスクをほぼゼロにできる。ただし外観確認としてはグレーアウトが邪魔になる場合もある。

無効化したHTMLをギガサイト便にアップロードし、認証付きURLを発行する。送付メッセージには「フォームはレビュー用のため送信できない状態にしています」と一言添えると、レビュアーが「フォームが壊れている」と誤解するのを防げる。

失敗しやすい点

フォームを無効化したファイルを公開本番用ファイルとして使ってしまうミスが起きやすい。レビュー用と本番用を明確に分けるため、ファイル名に「_review」サフィックスを付けるか、専用フォルダに隔離して管理する。

JavaScriptの無効化コードを</body>の前ではなく<head>に書くと、ページ読み込み中にDOMが存在せずquerySelectorAllが空を返す問題が起きる。スクリプトは必ずHTMLの末尾、</body>の直前に配置する。

フォームを無効化したままデプロイしてしまったという事故は定期的に発生する。フォームの無効化処理をHTMLのコメントで「<!-- REVIEW ONLY: DELETE BEFORE PRODUCTION -->」とマークアップしておけば、本番デプロイ前のチェックで気づきやすくなる。

テンプレ文面

〇〇フォームページのレビュー版URLをお送りします。フォームはレビュー用の仮設定のため、送信ボタンを押しても何も送信されない状態になっています。デザイン・文言・入力欄のレイアウトのみご確認ください。URL:[プレビューURL](有効期限:〇月〇日)

「何も送信されない」と明記する理由は、レビュアーが「送信できるかも」と試みた際に壊れていると誤解するのを防ぐためだ。意図的な仕様と伝えることで、フォームの見た目だけに集中してもらいやすくなる。

よくある質問

JavaScriptで無効化すると、レビュアーがブラウザのJS設定をオフにしたら送信できてしまいますか?

理論上はそうです。完全な防止が必要な場合はaction属性の削除とJavaScript無効化を併用するか、CSSのpointer-events:noneを組み合わせてください。レビュー用途では通常これで十分です。

フォームを無効化するコードは本番ファイルに影響しますか?

レビュー用ファイルに追記した無効化コードは、本番ファイルには反映されません。元のHTMLとは別のファイルとして管理し、アップロード後に元ファイルは変更しないことを徹底してください。

Googleフォームや外部フォームサービスを埋め込んでいる場合も無効化できますか?

iframeで埋め込まれた外部フォームはJavaScriptから直接制御できません。iframeタグ自体をコメントアウトするか、pointer-events:noneをiframeに適用してクリックを無効化する方法が現実的です。

関連記事

ハウツー

フォームを無効化して共有するときの手順と注意点

フォーム付きHTMLのレビュー共有で誤送信を防ぎたいWeb担当者に向けて、フォーム無効化の具体的な手順・コードの書き方・本番ファイルへの影響を防ぐ注意点を実務的に解説する記事。

5分で読める
ハウツー

フォームを無効化して共有するためのチェックリスト

フォーム付きHTMLのレビュー共有前に必要な全確認項目を把握したいWeb制作者に向けて、ファイル管理・無効化処理・テスト・送付・廃棄の各フェーズのチェックポイントをまとめた実務向け記事。

4分で読める
ハウツー

外部リンクをクリック不可にして見せる方法

レビュー用HTML共有で外部リンクの誤クリックを防ぎたいWeb制作者に向けて、CSSによる操作無効化・JavaScriptによるhref書き換え・target属性の制御という3つの手法と認証付きURL共有を組み合わせた安全な運用を解説する記事。

5分で読める
ハウツー

共有前に画像を圧縮する方法

HTMLプレビューを共有する前に画像を圧縮してファイルサイズを削減したいWeb制作者向け。ツール選定から実施手順まで、品質を落とさない圧縮方法を解説します。

4分で読める
ハウツー

レビュー用URLをSlackで配る方法

Slackでレビュー用URLを共有したい担当者向けに、準備・送信・無効化の一連の流れを解説。どのチャンネルに何をどう送ればよいか判断できます。

3分で読める
ハウツー

レビュー用URLをTeamsで配る方法

TeamsでレビューURLを共有したい担当者向けに、チャンネル・チャット・会議チャットの使い分けと配布時の設定手順を解説。どの機能を使えばよいか判断できます。

4分で読める
「ハウツー」の記事をもっと見る →