Assuming that we have three textboxes in each table row, and when the focus is on a particular textbox, the entire row is highlighted and remains highlighted even if we switch focus between the textboxes in the same row.
We don’t have to identify each control in a row or the entire table; rather we can group the controls together using CSS. The rest can be taken care of by jQuery .class selector.
Browser Support:
Chrome 39.0 - Yes | FireFox 34.0 - Yes | Internet Explorer 10 - Yes | Safari - Yes
<head> <title>Highlight Table Row on Textbox focus using jQuery</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <style> th, td, p, input { font:12px Verdana; } table, th, td { border: solid 1px #DDD; border-collapse: collapse; padding: 2px 3px; text-align: center; } th { font-weight:bold; } table:first-child tr:first-child td { padding:0 0 10px 0; } .grpTextBox { text-align:left; font:inherit; padding:2px 4px; margin:1px auto; border:solid 1px #BFBFBF; border-radius:2px; -moz-border-radius:2px; -webkit-border-radius:2px; } .highlight_row { background-color:#CCC; color:#000; } </style> </head> <body> <h3>Mobile Inventory</h3> <p>Set focus on a textbox to see the result. Use Tab key to go to the next row.</p> <div> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td><b>Brand</b></td> <td><b>Product ID</b></td> <td><b>Quantity</b></td> <td><b>Price ($)</b></td> <td><b>Total Amount ($)</b></td> </tr> <tr> <td>Sony</td><td>EN-101</td> <td><input type="text" class="grpTextBox" /></td> <td><input type="text" class="grpTextBox" /></td> <td><input type="text" class="grpTextBox" /></td> </tr> <tr> <td>Samsung</td><td>EN-102</td> <td><input type="text" class="grpTextBox" /></td> <td><input type="text" class="grpTextBox" /></td> <td><input type="text" class="grpTextBox" /></td> </tr> <tr> <td>Nokia</td><td>EN-103</td> <td><input type="text" class="grpTextBox" /></td> <td><input type="text" class="grpTextBox" /></td> <td><input type="text" class="grpTextBox" /></td> </tr> </table> </div> </body> <script> $('.grpTextBox').focus(function() { $(this).closest('tr').addClass('highlight_row'); }); $('.grpTextBox').blur(function() { $(this).closest('tr').removeClass('highlight_row'); }); </script> </html>
The jQuery .class selector in the script will look for elements (in our case textboxes) with a class named .grpTextBox.
The .closest() method will search for the row in which the selected (or focused) textbox exists and the .addClass() method will add a CSS class .highlight_row with the associated row.
Similarly the .removeClass() will remove the classand set it as it was before.