###前提 実現したいこと
v-forを使って、特定のデータを一覧表示しています。
データをクリックすると、フォーカスで色が変わるようにしています。
やりたいこととしては、
フォーカスが当たっているオブジェクトのデータを取得した状態で、すすむボタンをクリックしたい
(Aを選択しているときはAのデータ、Bを選択したらBのデータ)
どうすれば、AまたはBのオブジェクトを選択したままの状態で、すすむボタンをクリックすることができるでしょうか。方法は問いませんので、良い方法があればご教示下さい。
問題
@focusイベントを作って、AまたはBを選択し、データを取得することまではできました。
が、すすむボタンをクリックすると、フォーカスがすすむボタンに当たるため、AまたはBのフォーカスを維持できません。
すすむボタンをクリックしても、上記(AやB)のフォーカスしたデータを保持したいです。
ソース(一部)
HTML
<div v-for="object in data.loginListData" :key="object.code" > <button class=" sentakclick " @focus="isFocus(object)" :data-index="data.index" >{{ object.kigyomei}}</button> </div> <!-- ボタン--> <button @click="ClickAction()"> すすむ </button>
Javascript
//選択したオブジェクトデータの取得 isFocus(object){ //選択したオブジェクトデータの取得 this.selectData = JSON.stringify(object); },
css
.sentakuclick:focus { background: rgba(213, 225, 241, 0.71); }
いただいた回答をもとに追記
HTML
<!-- 前画面で取得した値をv-forで一覧表示 --> <div v-for="object in data.loginListData" :key="object.kigyocode" :class="{focused: isSelected(selectData)}"<!-- ←追記箇所 --> > <button class=" form-control w-300px h-55px d-block border-1px-blue-004BB1 pl-4 pr-4 radius-5px f-12px text-black-0D0D0D mb-3 input_radio_toggle2 " @focus="isFocus(object)" >{{ object.kigyomei}}</button> </div> <!-- ボタン--> <button class="btn w-150px h-28px text-center rounded-pill f-12px text-white bg-blue-013440 mx-auto d-block" @click="kigyousentakuClick()"> すすむ </button>
css
.focused { background: rgba(213, 225, 241, 0.71); }
JavaScript
//(追記箇所)オブジェクトが選択されているときだけクラスを付与する isSelected(object) { const selectedObject = JSON.stringify(this.selectData) // 選択中のオブジェクト return object.kigyocode === selectedObject.kigyocode // 選択中のものと渡されたものIDが等しいならばtrueを返す //選択したデータ取得 isFocus(object){ this.selectData.eigyoshocode = object.daihyoeigyoshocode; this.selectData.kigyocode = object.kigyocode; },
詰まっているところ
うまくtrueが返っていないのか、cssのclassが適用されません。
data.loginListDataのobjectが、何らかのidを持っている必要があります(でないと各objectが識別できないため)
なのでuserIdというプロパティを持っているとして話を進めます。
こちらでご教示いただいたuserIdは、kigyocodeが該当すると認識しているため書き換えています。
検証ツールで試したところ、
return object.kigyocode === selectedObject.kigyocode
object.kigyocodeとselectedObjectには同じkigyocodeの値が入っているようには見えますが、
electedObject.**kigyocode **のkigyokodeの中身は「undefind」でした。
何かコードが違っているのでしょうか。ご教示いただければ幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/12 11:21
2021/02/16 01:52