Micro-post today, folks:
You see a fair bit of confusion from newbies in mailing lists around the "name" attribute vs. the "id" attribute. For instance, I recently saw a "how do I do this" -style post asking how to deal with a form, with the sample being:
<form name='form1'>The poster wanted to know how to retrieve the form and submit it (along with some further information) via Prototype's
<input type='checkbox' id='cb1'>Checkbox 1
</form>
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
document.YourFormName in your JavaScript code. But nowadays we mostly look elements up by their unique IDs; and in the specific case of the question from the poster above, since he was going to want to use $(), he would want an ID.
0 comments:
Post a Comment