質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.36%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

1737閲覧

どれかひとつでもチェックが入った場合は、v-ifで表示の切り替えを行いたい

tarow

総合スコア19

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/02/17 08:39

編集2020/02/17 08:41

チェックボックスでどれかひとつでもチェックが入った場合は、v-ifで表示の切り替えを行いたいと思っています。
また、チェックがついた後、全てのチェックを外した場合は初期の表示に戻したいです。

<ul div=“check”> <li>りんご</li> <li><input type="checkbox"></li> <li>みかん</li> <li><input type="checkbox"></li> <li>なし</li> <li><input type="checkbox" ></li> </ul> <div v-if=“[type="checkbox”].checked”>チェックが入ってないよ</div> // チェックがひとつも入っていない状態(初期の状態) // こんなような処理のイメージです <div v-else>チェックが入ったよ</div> // チェックがひとつでも入った場合

知りたいこと
v-ifの箇所とjs側でどのようにコードを記載をすれば画面を切り替えることができるのか

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

v-modelを使ってチェックされた値が入ってる配列の要素数が1以上という判定をすれば可能です。
フォーム入力バインディング - Vue.js

投稿2020/02/17 09:30

nt4c

総合スコア768

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tarow

2020/02/17 11:17

ご回答を頂き誠にありがとうございました。 参考にさせて頂いたサイトでなんとなくですがやり方が理解できました。
guest

0

ベストアンサー

nt4cさんの回答で9割終わってますが、
最後のひと押しを解説します。

まず<input type="checkbox" id="john" value="John" v-model="checkedNames">という感じでvaluev-modelで何に属するかを決めます。
すると配列で束縛された結果が取れますが、
この時、配列なので配列が所持しているプロパティが使えます。

JavaScriptの全ての配列はlengthプロパティを所持していますので、
これが0件、もしくは1件以上かで処理を変えれば良いのです。

条件付きレンダリングの項目を確認したところ
v-ifの中には式が普通に書けるので
束縛したチェック項目をcheckedFoodsみたいな感じの名前として考えた場合、こんな感じで動くんじゃないですか?

html

1<div v-if="checkedFoods.length == 0"> 2 チェックが入ってないよ 3</div> 4<div v-else> 5 チェックされたよ! 6</div>

投稿2020/02/17 09:41

miyabi-sun

総合スコア21203

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tarow

2020/02/17 11:19

ご回答を頂きありがとうございます。 教えて頂いた情報を参考にコードを書き直し、思った動作ができました! 私は、下記のコードで一応は動いたのですが、もしさらに改善点があれば教えてもらえますと幸いです。 <div id="app"> <ul div=“check”> <li>りんご</li> <li><input type="checkbox" id="john" value="John" v-model="checkedNames"></li> <li>みかん</li> <li><input type="checkbox" id=“ken” value=“Ken” v-model="checkedNames"></li> <li>なし</li> <li><input type="checkbox" id=“taro” value=“Taro” v-model="checkedNames"></li> </ul> <div v-if="checkedNames.length == 0">チェックが入ってないよ</div> <div v-else>チェックが入ったよ</div> </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> var ken = new Vue({ el: '#app', data: { checkedNames: [] } }) </script>
miyabi-sun

2020/02/18 02:27

お、うまく行きましたか!ナイスです。 改善点としてはリストは箇条書きという意味なのに チェックボックスしかない行があって、その次の行に項目名があるってのが「セマンティックHTML」の観点で微妙かなって感じですね。 https://webmemo.work/about-semantic/ 綺麗に書くならこんな感じでしょうか。 余裕があれば勉強してみてください。 <li> <label> りんご <input type="checkbox"> </label> </li>
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問