We Blog Weblog

チェックボックスで分岐

Web

2023年3月15日

みなさんこんにちは。
ケミストのWeb担当みやのです。

「Web」記事では、これまでに得たWebに関する知識を記録として残していきたいと思います。

今回は「チェックボックスをチェックすると押せるようになるボタン」を作ってみます。

つくってみよう

参考:qam|チェックボックスの状態によるボタンの活性化・非活性化の動きを解説!

まずはチェックボックスを用意します。IDをcheckboxとします。

<input type="checkbox" id="checkbox">同意する

ボタンを用意します。IDをsubmitとします。

disabled="disabled"でボタンを無効化しておきます。

<input type="checkbox" id="checkbox">同意する
			
<button id="submit" disabled="disabled">送  信</button>

以下のスクリプトを記述します。

$(function() {
  $('#submit').attr('disabled', 'disabled');
  $('#checkbox').click(function() {
    if ( $(this).prop('checked') == false ) {
      $('#submit').attr('disabled', 'disabled');
    } else {
      $('#submit').removeAttr('disabled');
    }
  });
});

attrとpropというのを使うそうです。勉強になります。

送信ボタンを押しても別に何も送信されません。

複数のチェックボックスをトリガーにする

参考:Qiita|JavaScriptで複数のチェックボックスのうち1つでも選択されていたらボタンを有効にする

今度は「複数のチェックボックスすべてにチェックが入った場合のみ有効化するボタン」を作ってみます。

チェックボックスを3つ用意します。

IDとvalueをそれぞれ適当につけて、nameをchecksとしておきます。

<input type="checkbox" id="check1" value="1" name="checks">

<input type="checkbox" id="check2" value="2" name="checks">

<input type="checkbox" id="check3" value="3" name="checks">

さらにすべてのチェックボックスにonchange="change()"と付け加えます。

<input type="checkbox" id="check1" value="1" name="checks" onchange="change()">

<input type="checkbox" id="check2" value="2" name="checks" onchange="change()">

<input type="checkbox" id="check3" value="3" name="checks" onchange="change()">

先程と同様、ボタンのIDをsubmitにしてdisabled="disabled"で無効化します。

<input type="checkbox" id="check1" value="1" name="checks" onchange="change()">

<input type="checkbox" id="check2" value="2" name="checks" onchange="change()">

<input type="checkbox" id="check3" value="3" name="checks" onchange="change()">

<button id="submit" disabled="disabled">ボタン</button>

スクリプトを記述します。

function change() {
  const submitBtn = document.getElementById('submit');
  const checkboxes = document.querySelectorAll('input[name="checks"]:checked');
  if (checkboxes.length === 0) {
    submitBtn.disabled = true;
  } else {
    submitBtn.disabled = false;
  }
}

これで「複数のチェックボックスのうち1つでも選択されていたらボタンが有効になる」状態になりました。

checkbox.length === 0の部分を3に書き換えて、trueとfalseを入れ替えたら「複数のチェックボックスがすべて選択されるとボタンが有効になる」・・・はずです。

function change() {
  const submitBtn = document.getElementById('submit');
  const checkboxes = document.querySelectorAll('input[name="checks"]:checked');
  if (checkboxes.length === 3) {
    submitBtn.disabled = false;
  } else {
    submitBtn.disabled = true;
  }
}

 

シャチ!

ウナギ!!

タコ!!!

シャ

シャ

シャ

タ♪

シャ

シャ

シャ

タ♪

まとめ

仮面ライダー〇ーズはハマったなあ~

次回もチェックボックスによる条件分岐をやってみようと思います。

この記事を書いた人
みやの
Web・DTP担当

Contact Us

ご意見、ご相談、料金のお見積もりなど、お気軽にお問い合わせください。

お問い合わせはこちら

TOP