2011-05-13 8 views
9

マイHTML<tr><td>Text</td><td><input type="text" value=""></td></tr>入力が ":focus"のときにテーブル行(tr)の背景色を変更する方法は?

マイCSSinput:focus tr{ background-color:#fff;}

私は、入力フィールドにテキストを書いているとき、白の行をハイライト表示します。私は "tr"が "input"の前にあることを知っていますが、これはどんな方法でも可能ですか?

おかげでたくさん悲しいこと

答えて

9

いいえ、悲しいことです。参照:Complex CSS selector for parent of active child

はここしかし、あなたがそれを行うことができる方法です:http://jsfiddle.net/minitech/udzcp/

+0

は、このリンクをありがとうございました!あなたはちょうど私の時間を大いに救った – Joel

+0

ああ、ところで、私はあなたがJavaScriptでそれをするかもしれない方法の例を含めるために自分の投稿を編集しました。 – Ryan

1

は、CSSで親要素のスタイルを設定する方法はありませんので、あなたはJavaScriptを使用する必要があります。

-1

このjqueryのコードはそれを行う必要があります。

$('input').focus(function() { 
    $('tr').css("background-color", "#c00"); 
}); 

デモhere

+0

参照:http://jsfiddle.net/9mR95/そのコードは、入力要素が選択されている場合は入力要素の親だけでなく、すべての行を強調表示し、ぼかし後に行を強調表示しません。 – Ryan

1

これは、あなたが生成されている場合に適しています多くの類似した行(大きなデータセットをループするなど): スクリプト:

function rowSet(data_id){ 
    document.getElementById('row_' + data_id).style.backgroundColor = 'blue'; 
} 
function rowReset(data_id){ 
    document.getElementById('row_' + data_id).style.backgroundColor = ''; 
} 

ボディ:あなたはまた、currentRowのを使用することができ、またはあなたが好むものは何でも

<body> 
    <form> 
     <table> 
      <tr id="row_#data_id#"> 
       <td><input name="input1_#data_id#" onFocus="rowSet(#data_id#);" onBlur="rowReset(#data_id#);"></td> 
       <td><input name="input2_#data_id#" onFocus="rowSet(#data_id#);" onBlur="rowReset(#data_id#);"></td> 
      </tr> 
     </table> 
    </form> 
</body> 

5

JQueryを使用することは非常に可能です。お守り:

HTML

<table border="1" cellpadding="20"> 
    <tr> 
     <td>Text</td> 
     <td height="50" width="100" id="somename"><input type="text" value="" id="mirza"></td> 
    </tr> 
    <tr><td>&nbsp;</td><td>&nbsp;</td></tr> 
    <tr><td>a&nbsp;</td><td>1&nbsp;</td></tr> 
    <tr><td>a&nbsp;</td><td>1&nbsp;</td></tr> 
    <tr><td>a&nbsp;</td><td>1&nbsp;</td></tr> 
    <tr><td>a&nbsp;</td><td>1&nbsp;</td></tr> 
    <tr><td>a&nbsp;</td><td>1&nbsp;</td></tr> 
</table> 

CSS

.highlightedRow { background-color: orange; } 

のjQuery

$('input').focus(function() { 
    $(this).parent().parent().addClass('highlightedRow'); 
}); 

$('input').blur(function() { 
    $(this).parent().parent().removeClass('highlightedRow'); 
}); 
+0

+1とその代わり、私のために働いたので。 –