フォームのオートコンプリートを無効にする方法

症状

formに入力した内容が、リロードしても残る。

解決策

フォームにおけるオートコンプリートを無効にするには、autocomplete 属性に “off” を指定することで実現できます。


<form method="post" action="/form" autocomplete="off">
[…]
</form>

特定の input 要素に指定することも可能です。


<form method="post" action="/form">
  […]
  <div>
    <label for="cc">クレジットカード番号:</label>
    <input type="text" id="cc" name="cc" autocomplete="off">
  </div>
</form>

autocomplete=”off” を指定すると、以下の 2 つの効果が生じます。
◆同じようなフォームにおいて、今後ブラウザがオートコンプリートを行うためにデータを保存しないようにします。しかし、実際の動作はブラウザによって異なります。
◆ブラウザがフォームデータをセッション履歴にキャッシュしないようにします。フォームデータがセッション履歴にキャッシュされた場合、フォームの送信後に「戻る」ボタンで元のページに戻った際にユーザの入力データが表示されます。

autocomplete 属性に off が設定されている場合でも、ブラウザはオートコンプリートを行うことがあります。
オートコンプリートを完全に無効にするには、その属性値に 任意の文字列を代入 するというトリックを用います。



autocomplete="nope"