2017-03-02 4 views
0

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を使用します。 div's border is red when input is focus

(function($) { 
    $(".input").on("focus", function() { 
    $(this).parent("div").addClass("focus"); 
    }); 
    $(".input").on("focusout", function() { 
    $(this).parent("div").removeClass("focus"); 
    }); 
})(jQuery); 

これを行うには良い方法があるのだろうか?

Hereは私のJSFiddleです。

+0

コードは、あなたがしようとしていることをすでに達成しています。正確に「より良い」ものにしたいのですか?あなたはスピードを上げようとしていますか?どちらの方法でも、あなたの関数は、あなたがしようとしていることについて、すでにかなり良い方法です...あるいは、入力フォーカスに '.wrapper'の境界を変更しようとしていますか? –

+0

@ObsidianAgeこれをjsなしで作ることは可能ですか?そして、はい、入力フォーカスに '.wrapper'の境界を変更しようとしています。 –

+0

なぜDIVをフォーカス可能にしたいのですか?タブにタブが付いていて色が灰色から青色に変わるのはユーザーにとってはちょっと混乱しますが、見えない入力にもう一度タブするまでは入力できません。 (また、1のtabindexは、標準のタブシーケンスからそれを引き出します。これはしばしば悪い考えです) – nnnnnn

答えて

0

現在、タブでは、div(青い枠線)が選択されています。しかし、そこに何かを入力することはできませんので、もう一度タブを押す必要があります。それは私には無意味です。

<div class="wrapper"> 
    <input class="input" tabindex="1" type="text"> 
    <input class="input" tabindex="2" type="text"> 
</div> 

しかし、離れて、あなたがすでに行っているように私には、javascriptのを除いて、ラッパーのハイライトを作るためにどのような方法を知っていないことから:だから私は、入力にtabindex属性ではなく、ラッパーを与えると思います。

+0

ありがとう、私はこの点について考えていない! 最初は、フォーカス状態(入力フォーカスとdivフォーカスを同時に行う)にしたいだけです。 –

+0

http://stackoverflow.com/a/1014958/1544886 2月17日現在では親セレクタがないことを確認するので、JSは唯一のオプションです( 'focus'とにかく...' hover'はCSSティックを使うことができます親要素に影響を与えます)。 –

関連する問題