添付の図の通り、A,Bのどちらか選択した方の情報を次画面に送信する画面をvue.jsで作っています。
実現したいこと
画像の赤斜線箇所(ボタン要素以外)をクリックした際に、A(またはB)で選択した際の色を保持したい。
現在の状況
選択したA(またはB)の色を変更し、色を保持するところまではできました。
(色を保持するタイミングは、他のボタン要素をクリックするまでの間)
が、ボタン要素以外の背景をクリックすると色の保持が外れます。
<!--選択エリア(A,B)--> <div id="target" tabindex="-1" v-for="object in data.loginListData" :key="object.hogehoge" > <button class="focused" :class='isSelected' @click="isFocus(object)" >{{ object.hogehoge}}</button> </div> <!--次の画面に進むボタン(A,Bのフォーカスが当たっている方のデータを保持して送信)--> <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>
/* ------- 選択エリア(A,B)のcss(scss) ------- */ .focused { &:focus { background-color: #d2dfe2 !important; } }
教えてほしいこと
JavaScriptなどで、ボタン要素以外をクリックしても、最後に選択したボタンの色は維持したままにできるようなコードを教えてほしいです。(別ボタンの選択以外ではクリック時の色を保持する)
実現方法に特に指定はありませんが、jQuery以外の方法がうれしいです。
◆参考にしてみたサイト(JavaScript初心者のためうまく実装できませんでした)
JavaScriptで特定の要素以外をクリックした時のイベント【jQuery不要】
hatena19様の回答をもとに修正
追加で教えていただきたいこと:
・v-forでラベルに一覧表示しているラジオボタンの色が、選択しても変わらない(動かない)
・クリックして色が変わるように修正したい
<!-- 前画面で取得(josn)した企業名を表示 --> <div class="item"> <div v-for="object in data.loginListData" :key="object.label" class="btnBlock" @click="isFocus(object)" > <input :id="object.id" v-model="form.search_kigyo" type="radio" name="search_kigyo" class="input_radio_toggle_w-300px " :value="object.value" /> <label :for="object.id">{{ object.kigyomei }}</label> </div> </div>
うまくいかない原因かなと思っていること:
いただいたリンクをもとに、以下のようにv-for内を記載すると、ラジオボタンの色は動くようになりますが、ここで呼び出している「data.loginListData」は、前画面からの情報をstrageに保存したものを呼び出しているため、頂いたリンクの通り固定のデータを指定できません。このような場合、どのように記述すればよろしいのでしょうか、、、、。
<div v-for="object in [ { id: 'search_hyojiflag_2', label: 'すべて', value: '2' }, { id: 'search_hyojiflag_1', label: '表示のみ', value: '1' }, { id: 'search_hyojiflag_0', label: '非表示のみ', value: '0' }, ]"
回答1件
あなたの回答
tips
プレビュー