【Vue.js】inputタグのチェックボックス(type=”checkbox”)でv-modelを使う方法と注意点を実例で解説|複数選択や初期選択の設定方法

vue-js-prograshi(プロぐらし)-kv Vue.js
記事内に広告が含まれていることがあります。
[PR]

Vue.jsに用意されているv-modelを使うと、チェックボックス(inputタグのtypeがcheckbox)のデータとVue.jsのデータを連動させることができます。

初期設定されているデータを指定したり、現在選択されている項目のデータをタイムリーに取得し、それに合わせて画面の表示を変えるといった処理を行うことが可能になります。

ただし、チェックボックスでv-modelを使う場合は、選択できる項目が1つなのか複数なのかでデータの持たせ方や記述が違うなど注意点があります。

ここでは、チェックボックスでv-modelを使う方法や注意点を実例で解説しています。


チェックボックスでv-modelを使う方法と注意点

v-modelの基本的な使い方

チェックボックスでv-modelを使う場合は、inputタグに対して以下のようにv-modelを設定します。

<input type="checkbox" id="id名" v-model="プロパティ名">

v-modelがchecked属性の代わりになるため、checked属性を設置する必要はありません


注意点

チェックできる項目が一つだけの場合と、選択項目が複数ある場合でデータの持たせ方や属性の記載方法が異なるので注意が必要です。

注意ポイントはvalueの有無と、プロパティの値が真偽値か配列かの違いです。

選択項目の数プロパティの値タグの属性
1つ真偽値(true/false)value属性は不要
複数配列value属性が必須

以下で選択項目の数が1つの場合と複数の場合を、それぞれ実例を用いてまとめています。


選択項目が1つだけのチェックボックス

使い方と注意点

選択項目が1つだけのチェックボックスの場合、v-model=”プロパティ名”とし、プロパティの値を真偽値(true or false)にします。

プロパティの値がtrueの時はチェックあり、チェックを外すとプロパティの値がfalseになります。

デフォルトでチェック無しにしたい場合は、プロパティの値をfalseにしておきます。


実例

var app = new Vue({
    el:'#app',
    data:{
        //checkboxの状態
        isChecked: true
    }
})
<body>
   <div id="app">
            <p>■checkboxでv-modelを使う</p>
     
            <input type="checkbox" id="checkbox1" v-model="isChecked">
            <label for="checkbox1">プロパティの値:{{isChecked}}</label> 
   </div>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.6.11"></script>
</body>
チェックボックス作成の基本

・チェックボックスはinputタグでtype=”checkbox”にします。
・labelタグのfor属性にid名を記述することで、inputタグ(フォーム)と紐付けることができます。例:for="id名"

(補足)labelタグを使うメリット

labelタグは設置しても画面の見た目に大きな変化はありません。ただし、以下のようなメリットがあります。

  • 可読性が上がる(タグが見やすくなる)。
  • 選択範囲が広がる(label要素をクリックした場合でも反応するようになる)
  • 読み上げ機能のサポート(label部が読みあげられる)


▼ブラウザの表示

デフォルトではv-modelでつないでいるisCheckedプロパティの値がtrueなので、チェックありになります。

 ↓ チェックを外す

チェックを外したことで、isCheckedプロパティの値がfalseに変わっています。

 ↓ チェックをつける

再度チェックをつけると、isCheckedプロパティの値がfalse→trueに切り替わります。


複数のチェックボックスでv-modelを使う方法

使い方と注意点

複数のチェックボックスの場合はVue.js側でプロパティの持たせ方と、タグの属性の設定方法が異なります。

複数のチェックボックスでv-modelを使う方法
  • 各inputタグにvalue属性を設定する。値は固有にする。
  • v-modelで指定するプロパティの値は配列にする。
  • 選択状態にしたい要素は、配列の中にvalue属性名を記載する。

ポイントとしては、配列内にvalueの値を記述するとチェックマークがつきます。配列が空欄の場合、すべてチェックマークなしの状態になります。

inputタグは次のようになります。

<input type="checkbox" v-model="プロパティ名" value="固有の値">


実例

id名がblue, redgreen,green,の3つのチェックボックスを用意して、初期状態で、blueとgreenにチェックマークが入った状態をつくる場合は以下のようになります。

var app = new Vue({
    el:'#app',
    data:{
        //複数のcheckbox
        multiChecked: ["blue", "Green"]
    }
})
<body>
   <div id="app">
     <p>■checkboxでv-modelを使う</p>

     <input type="checkbox" id="red" v-model="multiChecked" value="red">
     <label for="red">Red</label>

     <input type="checkbox" id="blue" v-model="multiChecked" value="blue">
     <label for="blue">Blue</label>

     <input type="checkbox" id="green" v-model="multiChecked" value="green">
     <label for="green">Green</label>

     <br>

     <p>プロパティの値: {{multiChecked}}</p>
   </div>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.6.11"></script>
</body>


▼ブラウザの表示

デフォルトではv-modelで選択しているmultiCheckedプロパティの値が["blue", "green"]なので、該当するid名のチェックボックスがチェック済みになります。

↓ Redにチェックマークを入れる。

multiCheckedプロパティの値が["blue", "green", "red"]になっていることに注目してください。

 ↓ 全てのチェックマークを外す。

全てのチェックマークを外すと、multiCheckedプロパティの値は空の配列[]になります。

タイトルとURLをコピーしました