Micro-post today, folks:
You see a fair bit of confusion from newbies in mailing lists around the "name" attribute vs. the "id" attribute. (Edit 21 March 2010: Confusion not helped by a bug in Internet Explorer; more here.) For instance, I recently saw a "how do I do this" -style post asking how to deal with a form, with the sample being:
The poster wanted to know how to retrieve the form and submit it (along with some further information) via Prototype's
<label><input type='checkbox' id='cb1'> Checkbox 1</label>
Ajax.Updater. So he wanted to use the
serialize()method Prototype adds to form elements when it extends them (e.g., when you retrieve the element using
Consequently, the use of "id" and "name" attributes in his example was exactly backward: He wanted to be able to retrieve the form using
$(), which is a general-purpose routine that retrieves elements by their unique ID, and then have the form fields submitted -- but the form field had no name.
Here's the mantra:
Elements have IDs; form fields have names.IDs are unique in the document; form field names are not (necessarily).
Two further notes:
1. Form fields can also have IDs if you need to refer to their elements in your code (to enable/disable them, etc.), but in terms of sending in a form, fields have names.
2. You don't have to use an ID to get at the element for a form; you can use a name and then get at the form element via
$(), he would want an ID.