Doctuh wrote:
> ...
>
> <form id="foo">
>  <input type="hidden" name="id' value="bar" />
> </form>
>
> If you have a form with a hidden form element named 'id', and you try
> to use readAttribute() on the form you will get two different
> responses:
>
> IE gives you an Object (the input object named 'id')
> Firefox gives you 'foo'.
>
> IE will give you 'foo' if there is not a overriding form element.
>
> ...
>
>   
I can confirm that using element.id, element.readAttribute('id'), and 
element.getAttribute('id') will always return the same thing as the most 
explicit form-element access: document.forms[0].elements['id'];  In 
fact, "foo" doesn't seem to be a value for any attribute of the form 
node--when I iterate through the properties of the foo form, for 
example, the text "foo" does not show up anywhere.  I don't know of any 
function besides getAttribute that should return it.  Somehow the 'id' 
node (the hidden input) in the form's elements collection overwrites the 
form node id.

I don't know if there is a good way to normalize this behavior for IE 
without checking for a form tag and using something hackish like a regex 
on outerHTML. For example, the code below uses outerHTML and works at 
least for the case you provided.

- Ken Snyder


Element.addMethods('form', {
  readAttribute: function(element, name) {
    element = $(element);
    if (Prototype.Browser.IE) {

      // begin new section
      if (typeof element[name] == 'object') {
        var match = new RegExp(RegExp.escape(name) + '=([^ 
 >]+)').exec(element.outerHTML);   
        if (match) return match[1];
      }
      // end new section

      var t = Element._attributeTranslations.read;
      if (t.values[name]) return t.values[name](element, name);
      if (t.names[name]) name = t.names[name];
      if (name.include(':')) {
        return (!element.attributes || !element.attributes[name]) ? null :
         element.attributes[name].value;
      }
    }
    return element.getAttribute(name);
  }
});






--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype: Core" group.
To post to this group, send email to prototype-core@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/prototype-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to