jQuery plugin to associate label “for” attribute with form controls that have dynamic id’s

For whatever reason, you can’t associate your labels with your form controls implicitly by wrapping both the label text and the control in a <label> element:

<label>
  Email address: <input type="email" name="email" value="" placeholder="you@example.com"/>
</label>

You’ve had to explicitly state the form control you want the label to be associated with:

<label for="email">Email address:</label>
<input id="email" type="email" name="email" value="" placeholder="you@example.com"/>

…but your framework has other ideas, it decides to commandeer your precious “id” attribute and change it from a simple and beautiful “email” into a junky “dnn_ctr1163_RegistrationForm_email”. *cough* DotNetNuke *cough*, but also *cough* Wicket *cough* and probably a whole load of others.

The problem is now that your label is no longer associated with your form control, and there isn’t a simple fix, like, for example, change the for attribute to read “dnn_ctr1163_RegistrationForm_email”, because the numbers in the id change each time you refresh the page. The ID is dynamic, and you are receiving accessibility black stars.

So, luckily I noticed that often the id will change, but the framework will leave your originally intended id somewhere in there. I’ve written a jQuery plugin to look at label for attributes and try to find the form control you intended to associate it with before your server side framework so rudely changed it.

How to use

  1. Download the plugin and add it to your page
  2. Select the labels you want to re-associate and call the function eg. $(‘label’).fuzzyFor();

TODO

The plugin finds matches by looking for input, select and textarea elements in the document and checking to see if the for attribute in your label element appears in the id attribute of the form control. At the moment if more than one match is found, it just uses the first (which is probably good enough for most). However, it should probably do something a bit more clever and use the form control that is closest to the label (I’m reasoning that you normally put your label’s close to your controls).

15,819 thoughts on “jQuery plugin to associate label “for” attribute with form controls that have dynamic id’s

  1. sildenafil 50 mg price Viagra without a doctor prescription Canada Buy Viagra online cheap

  2. free chips no deposit bonus australia, online casinos canada no deposit bonus and united statesn online poker rooms,
    or el torero slot usa

    Visit my web site: goldstrike casino promotions (Annabelle)

  3. Buy Viagra online cheap: MenCare Virtual – Viagra online price

  4. Generic Viagra for sale: MenCare Virtual – Sildenafil Citrate Tablets 100mg

  5. no deposit online pokies nz, 888 poker download united states and bet365 play rosie’s casino in new kent
    va (Shanna) zealandn roulette online uk, or paysafe casinos uk

  6. win money instantly usa no deposit, best new zealandn roulette strategy and free
    no deposit spins usa, or pokies open in south united states

    Here is my page; casino without swedish license (Latisha)

  7. order viagra: MenCare Virtual – Cheap generic Viagra

  8. viagra canada: MenCare Virtual – Cheap Viagra 100mg

  9. Cheap generic Viagra: Cheap generic Viagra – Viagra tablet online

  10. Viagra online price: Sildenafil Citrate Tablets 100mg – cheap viagra

  11. buy Viagra over the counter: MenCare Virtual – Cheap Viagra 100mg

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>