I am trying to do make some text show when a text input is on focus, but the closest(); method doesn't seem to be working.
I have done a JS Fiddle for you to look at.
and here is the code also.
JS
$(document).ready(function(){ $('.validation-error').hide(); $('.name-input').on("focus", function(){ $(this).closest('.validation-error').show(); }); });
HTML
<fieldset> <legend>User Details</legend> <table> <tr> <td width="200"> <label for="user"><span class="required-fields">*</span> User Name</label> </td> <td> <input type="text" id="user" class="name-input"> </td> <td> <p class="validation-error">This field cannot be blank or less than 2 characters.</p> </td> </tr> <tr> <td> <label for="job_title"><span class="required-fields">*</span> Job Title</label></td> <td> <input type="text" id="job_title" class="name-input"> </td> <td> <p class="validation-error">This field cannot be blank or less than 2 characters.</p> </td> </tr> <tr> <td> <label for="full_name">* Full Name</label> </td> <td> <input type="text" id="full_name" class="name-input"> </td> <td> <p class="validation-error">This field cannot be blank or less than 2 characters.</p> </td> </tr> </table> </fieldset>
Any help would be appreciated.
.closest() finds the nearest parent element, .validation-error
is not a parent of the name-input
element. You need the .validation-error
element which comes under the same tr
as the input element
You need
$(this).closest('tr').find('.validation-error').show();
or
$(this).closest('td').next().find('.validation-error').show();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With