ハウツー

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

HTMLにフォームが含まれる場合、そのままレビュー共有すると誤送信によって本番データが汚染されるリスクがある。フォームを無効化してから共有する手順は5分以内で完了するが、注意点を把握せずに進めると本番ファイルに影響が出ることもある。安全な手順を一から説明する。

準備するもの

まず共有するHTMLファイルのコピーを作成する。元ファイルは絶対に変更せず、「ページ名_review.html」などリネームしたコピーに対してのみ無効化処理を行う。この原則を守るだけで、本番ファイルへの影響を防ぐ最大の安全策になる。

コピーしたファイルをテキストエディタで開き、<form>タグが何か所あるか確認する。ページによっては検索ボックスも<form>タグで実装されているため、問い合わせフォームだけ無効化したつもりが検索も止まるケースがある。全ての<form>タグの場所と役割を把握してから作業に入る。

無効化後の動作確認に使うブラウザと、テスト用のダミーデータを準備しておく。実際にフォームに入力して送信ボタンを押してみて、何も起きないことを確認するのが最も確実なテスト方法だ。コンソールに「Uncaught TypeError」など赤いエラーが出ていないことも確認する。

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

実際の手順

コピーファイルの</body>直前に以下のスクリプトを追加する:<script>document.querySelectorAll('form').forEach(function(form){form.addEventListener('submit',function(e){e.preventDefault();console.log('REVIEW MODE: Form submission blocked');});});</script>。console.logを入れておくことで、開発者ツールを開いているレビュアーが「意図的にブロックされている」とわかる。

action属性も念のため削除または空文字に変更する。<form action="https://example.com/api/contact">を<form action="">に変えるだけだ。JavaScriptが無効な環境でも送信先がなくなるため、二重の安全網になる。変更箇所を<!-- REVIEW: action removed -->というコメントでマークしておくと、後で本番ファイルと差分比較したときに見つけやすい。

修正したファイルをローカルで開き、開発者ツールのNetworkタブを見ながら送信ボタンを押してPOSTリクエストが発生しないことを確認する。確認できたらギガサイト便にアップロードして認証付きURLを発行し、レビュアーに「フォームは送信できない状態です」と注記を付けて共有する。

失敗しやすい点

コピーファイルではなく元ファイルを直接編集してしまうミスが最も多い。作業前に「今開いているファイル名はどれか」をエディタのタブで必ず確認する。特に自動保存が有効なエディタ(VS Codeなど)では誤編集がリアルタイムで保存されるため注意が必要だ。

フォームのaction属性を削除したが、フォームコンポーネントがVueやReactで実装されていて、HTMLのaction属性とは別にJavaScriptのsubmitハンドラが設定されているケースがある。フレームワーク製フォームの場合は、ソースコードのsubmitイベントハンドラも確認して止める必要がある。

レビュー完了後にコピーファイル(_review.html)を削除せず、デプロイ対象フォルダに残してしまうことがある。デプロイスクリプトが全HTMLファイルをアップロードする設定になっていると、_review.htmlが本番環境に公開されてしまう。デプロイ前のファイルリストチェックにこの確認を追加する。

テンプレ文面

お疲れ様です。〇〇ページのフォームレビュー版URLを共有します。フォームは送信できないよう設定済みですので、安心してフォーム入力のUIや文言をご確認ください。ご確認ポイント:①エラーメッセージの表示タイミングと文言 ②送信完了画面への遷移デザイン(今回はダミー画面で再現)。URL:[プレビューURL]

送信完了画面や確認画面があるフォームの場合、送信後の画面フローも確認してほしいことがある。この場合はJavaScriptで送信を止めた後に「location.href='thanks.html'」で別のダミー完了画面に遷移させる処理を追加すると、フォームの一連のフローをシミュレートできる。

よくある質問

送信ボタンをdisabled属性にするだけではダメですか?

disabledにするだけではEnterキー押下やJavaScriptからの.submit()呼び出しで送信できる場合があります。preventDefaultとaction属性の削除を組み合わせる方法の方が確実です。

フォームの入力バリデーション動作もレビューしてもらいたい場合、どう設定すればいいですか?

バリデーション(入力エラー表示)はsubmit時に動作するものが多いため、preventDefaultを使えばバリデーション自体は動きます。エラーメッセージの表示を確認してもらいながら最終送信だけを止める用途に最適です。

レビュー用コピーと本番用ファイルを間違えないための管理方法はありますか?

フォルダを「review/」と「production/」に分けて管理するのが最も確実です。デプロイスクリプトがproductionフォルダのみを参照する設定にしておけば、reviewフォルダのファイルが本番に上がる事故を防げます。

関連記事

ハウツー

差し替え履歴をメモするときの手順と注意点

静的HTMLページの差し替えを繰り返す担当者向けに、差し替え履歴を記録する手順・バージョン命名のルール・差し替え通知のタイミングと注意点を実務ベースで解説します。

4分で読める
ハウツー

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

HTMLのレビュー共有でフォーム誤送信が心配なWeb制作者に向けて、submitイベントの無効化・action属性の削除・CSSによる操作禁止の3手法を比較し、認証付きURLと組み合わせた安全な共有方法を解説する記事。

4分で読める
ハウツー

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

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

4分で読める
ハウツー

レビュー用URLをSlackで配るときの手順と注意点

Slackでレビュー用URL配布時のミスに悩む担当者向け。送信前チェックから修正版の再送まで、つまずきやすい注意点を段階的に解説。次のレビュー依頼から即実践できます。

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