divに2つの入力があり、フォーカスできるようにtabindex=1
を設定します。div内の入力がフォーカスされているときの境界線の色(フォーカスステータス)
<div class="wrapper" tabindex="1">
<input class="input" type="text">
<input class="input" type="text">
</div>
そして、私のSCSS:
div {
border: solid 1px lightgray;
padding:3px;
display: inline-block;
background-color: #fff;
&:focus {
outline: none;
border: solid 1px blue;
}
}
input {
border: solid 1px transparent;
&:focus {
outline: none;
border-bottom: solid 1px red;
}
}
この方法で入力が焦点となったとき、div要素にフォーカスしません。 これを行うにはjQueryを使用します。
(function($) {
$(".input").on("focus", function() {
$(this).parent("div").addClass("focus");
});
$(".input").on("focusout", function() {
$(this).parent("div").removeClass("focus");
});
})(jQuery);
これを行うには良い方法があるのだろうか?
Hereは私のJSFiddleです。
コードは、あなたがしようとしていることをすでに達成しています。正確に「より良い」ものにしたいのですか?あなたはスピードを上げようとしていますか?どちらの方法でも、あなたの関数は、あなたがしようとしていることについて、すでにかなり良い方法です...あるいは、入力フォーカスに '.wrapper'の境界を変更しようとしていますか? –
@ObsidianAgeこれをjsなしで作ることは可能ですか?そして、はい、入力フォーカスに '.wrapper'の境界を変更しようとしています。 –
なぜDIVをフォーカス可能にしたいのですか?タブにタブが付いていて色が灰色から青色に変わるのはユーザーにとってはちょっと混乱しますが、見えない入力にもう一度タブするまでは入力できません。 (また、1のtabindexは、標準のタブシーケンスからそれを引き出します。これはしばしば悪い考えです) – nnnnnn