• Skip to main content
  • Skip to search
  • Skip to select language
MDN Web Docs
  • References
    • Overview / Web Technology

      Web technology reference for developers

    • HTML

      Structure of content on the web

    • CSS

      Code used to describe document style

    • JavaScript

      General-purpose scripting language

    • HTTP

      Protocol for transmitting web resources

    • Web APIs

      Interfaces for building web applications

    • Web Extensions

      Developing extensions for web browsers

    • Accessibility

      Build web projects usable for all

    • Web Technology

      Web technology reference for developers

  • Learn
    • Overview / MDN Learning Area

      Learn web development

    • MDN Learning Area

      Learn web development

    • HTML

      Learn to structure web content with HTML

    • CSS

      Learn to style content using CSS

    • JavaScript

      Learn to run scripts in the browser

    • Accessibility

      Learn to make the web accessible to all

  • Plus
    • Overview

      A customized MDN experience

    • AI Help

      Get real-time assistance and support

    • Updates

      All browser compatibility updates at a glance

    • Documentation

      Learn how to use MDN Plus

    • FAQ

      Frequently asked questions about MDN Plus

  • Curriculum New
  • Blog
    • Playground

      Write, test and share your code

    • HTTP Observatory

      Scan a website for free

    • AI Help

      Get real-time assistance and support

  • Log in
  • Sign up for free
  1. 開発者向けのウェブ技術
  2. HTML
  3. リファレンス
  4. 要素
    • English (US)
    • Deutsch
    • Español
    • Français
    • 한국어
    • Português (do Brasil)
    • 中文 (简体)

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

この記事では

  • 試してみましょう
  • 値
  • 追加の属性
  • チェックボックスの使用
  • 検証
  • 例
  • 技術的概要
  • 仕様書
  • ブラウザーの互換性
  • 関連情報
  1. HTML
  2. ガイド
  3. コンテンツカテゴリー
  4. コメント
  5. 日付と時刻の形式
  6. 制約検証
  7. ビューポートの meta 要素
  8. レスポンシブ画像
  9. マイクロデータ
  10. マイクロフォーマット
  11. 後方互換モードと標準モード
  12. HTML 早見表
  13. 手引
  14. HTML で用語を定義する
  15. データ属性の使用
  16. 別オリジンの画像の利用
  17. 画像の上にヒットマップを追加する
  18. 読み込みが速い HTML ページを作成する
  19. JavaScript の追加
  20. リファレンス
  21. 要素
    1. 非推奨;
    2. 非推奨;

    3. 非推奨;
    4. 非推奨;
    5. Experimental
    6. 非推奨;
    7. 非推奨;
    8. 非推奨;

この例では、両方のチェックボックスに同じ name を設定しました。両方のチェックボックスがチェックされてフォームが送信されると、名前/値の組み合わせの文字列は interest=coding&interest=music のように送信されます。データがサーバー側に届いたときには、連想配列以外の方法で解析して、 interest の値を持つ値を、最後の値だけでなくすべて拾う必要があります。 Python を使用したやり方としては、例えば、単一のサーバー側の変数で複数のチェックボックスを扱うを参照してください。

既定のチェックボックス

チェックボックスを既定でチェック状態にするには、 checked 属性を設定するだけです。次の例を見てください。

html
関心があるものを選んでください

チェックボックスの当たり判定領域を広げる

上記の例では、チェックボックス自身と同様に、関連する 要素をクリックするとチェックボックスを切り替えられることに気づいたかもしれません。これは HTML フォームのラベルの本当に便利な機能で、特にスマートフォンのような画面の小さい端末でオプションをクリックしやすくなります。

これがフォームに 要素を適切に設定する、アクセシビリティ以外のもう一つの理由です。

未決定状態のチェックボックス

チェックボックスは未決定 (indeterminate) 状態にすることができます。これは JavaScript から HTMLInputElement オブジェクトの indeterminate プロパティを使用して設定します(HTML の属性を使用して設定することはできません)。

js
inputInstance.indeterminate = true;

indeterminate が true である場合、多くのブラウザーでは、チェックボックスにはボックス内にチェックの代わりに水平線(ハイフンやマイナス記号のように見えるもの)が引かれます。

メモ: これは純粋に視覚的な変更です。チェックボックスの value がフォーム送信に使用されているかどうかには影響しません。これは checked の状態によって決定され、 indeterminate の状態とは関係ありません。

このプロパティを使用する機会は多くありません。最もよくある例では、チェックボックスが複数のサブオプション(チェックボックス)を「統括」している場合です。すべてのサブオプションがチェックされたとき、統括しているチェックボックスもチェックされ、すべてのチェックボックスのチェックが外れたとき、統括しているチェックボックスもチェックが外れます。1 つ以上のサブオプションが他とは異なる状態にあるとき、統括しているチェックボックスは未決定の状態になります。

これは以下の例に見られます(この発想は CSS Tricks のおかげです)。この例では、製作手順のために収集する材料を追跡しています。材料のチェックボックスをオンまたはオフにすると、 JavaScript の関数はチェックされた材料の総数をチェックします。

  • チェックがない場合、製作手順名のチェックボックスは未チェックになります。
  • 1 つまたは 2 つがチェックされた場合、製作手順名のチェックボックスは indeterminate に設定されます。
  • 3 つともチェックされた場合は、製作手順名のチェックボックスが checked に設定されます。

ですからこの場合は、材料を集め始めているものの、製作が完成していない状態に indeterminate が使われます。

js
const overall = document.querySelector("#enchantment");
const ingredients = document.querySelectorAll("ul input");

overall.addEventListener("click", (e) => {
  e.preventDefault();
});

for (const ingredient of ingredients) {
  ingredient.addEventListener("click", updateDisplay);
}

function updateDisplay() {
  let checkedCount = 0;
  for (const ingredient of ingredients) {
    if (ingredient.checked) {
      checkedCount++;
    }
  }

  if (checkedCount === 0) {
    overall.checked = false;
    overall.indeterminate = false;
  } else if (checkedCount === ingredients.length) {
    overall.checked = true;
    overall.indeterminate = false;
  } else {
    overall.checked = false;
    overall.indeterminate = true;
  }
}

検証

チェックボックスは検証(すべての に対して行われる)に対応しています。しかし、多くの場合 ValidityState は常に false になります。チェックボックスに required 属性がある場合で、チェックされていない場合、 ValidityState.valueMissing が true になります。

例

次の例は、上で見た「複数のチェックボックス」の拡張版です。より標準的なオプションと、チェックされたときに「その他」オプションの値を入力する入力欄を表示させる「その他」チェックボックスがあります。これは JavaScript の短いブロックで実現します。この例では、 が直接 の中にあり、暗黙のラベルを含んでいます。目に見えるラベルのないテキスト入力は、aria-label を指定すると、指定されたアクセス可能な名前を提供することができます。この例では、スタイル設定を改善するためにいくつかの CSS も記載しています。

HTML

html

  
興味のあるものを選択してください

CSS

css
html {
  font-family: sans-serif;
}

form {
  width: 600px;
  margin: 0 auto;
}

div {
  margin-bottom: 10px;
}

fieldset {
  background: cyan;
  border: 5px solid blue;
}

legend {
  padding: 10px;
  background: blue;
  color: cyan;
}

JavaScript

js
const otherCheckbox = document.querySelector("#other");
const otherText = document.querySelector("#otherValue");
otherText.style.visibility = "hidden";

otherCheckbox.addEventListener("change", () => {
  if (otherCheckbox.checked) {
    otherText.style.visibility = "visible";
    otherText.value = "";
  } else {
    otherText.style.visibility = "hidden";
  }
});

技術的概要

値 チェックボックスの値を表す文字列。
イベント change および input
対応している共通属性 checked
IDL 属性 checked、indeterminate、value
DOM インターフェイス HTMLInputElement
メソッド select()
暗黙の ARIA ロール checkbox

仕様書

Specification
HTML
# checkbox-state-(type=checkbox)

ブラウザーの互換性

関連情報

  • :checked, :indeterminate: CSS のセレクターで、現在の状態に基づいてチェックボックスを整形できます
  • HTMLInputElement: HTML DOM API において 要素が実装しているもの

Help improve MDN

Learn how to contribute.

This page was last modified on 2025年4月20日 by MDN contributors.

View this page on GitHub • Report a problem with this content
MDN logo

Your blueprint for a better internet.

  • MDN on Bluesky
  • MDN on Mastodon
  • MDN on X (formerly Twitter)
  • MDN on GitHub
  • MDN Blog RSS Feed

MDN

  • About
  • Blog
  • Careers
  • Advertise with us

Support

  • Product help
  • Report an issue

Our communities

  • MDN Community
  • MDN Forum
  • MDN Chat

Developers

  • Web Technologies
  • Learn Web Development
  • MDN Plus
  • Hacks Blog
  • Website Privacy Notice
  • Cookies
  • Legal
  • Community Participation Guidelines

Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2025 by individual mozilla.org contributors. Content available under a Creative Commons license.