Hi,

It fails because you never extend the checkbox element, just the form.
On IE, you have to explicitly extend individual elements, Prototype
can't do it at the prototype level because IE doesn't allow it.
(Prototype extends elements at the prototype level, rather than
individually, in just about every other browser.) More here:
http://prototypejs.org/learn/extensions

So your code will work reliably if you extend the element:

document.observe('dom:loaded', function() {
    var elm = $('form-on-fails');
    var checkbox = $(elm['test']); // extend it
    alert(checkbox);               // object
    alert(checkbox.setValue);      // function
});

Live examples:
http://jsbin.com/ojali3 - the code above
http://jsbin.com/ojali3/2 - demonstrating it before (fails on IE) and
after

This is not new behavior, this is how Prototype has worked for years;
perhaps always, I wouldn't know in the pre-1.6 years. For instance,
here with 1.6.1:
http://jsbin.com/ojali3/3

Note that once a specific element has been extended *once*, it stays
extended until/unless it's torn down. So for instance, this works,
even on IE:

document.observe('dom:loaded', function() {
    var elm = $('form-on-fails');
    $(elm['test']);              // extend the element
    alert(elm['test']);          // object
    alert(elm['test'].setValue); // function
});

http://jsbin.com/ojali3/4

...so when you've done this before, directly accessing form elements
without extending them at that particular time, perhaps you'd already
extended them earlier or something.

HTH,
--
T.J. Crowder
Independent Software Engineer
tj / crowder software / com
www / crowder software / com


On Apr 8, 3:37 pm, Justin Osborne <[email protected]> wrote:
> I have a test case of something that works in every browser except for
> IE (testing with IE6-9, but I've seen it work with 9 before) when
> using Prototype 1.7. We tried upgrading to 1.7 this week and it broke
> some of our sites because I've used this often in the past with
> Prototype 1.6 (thus, we had to go back to 1.6). I don't like assign
> IDs to every form element when you can get them by their name. Is this
> a bug or something I'm doing wrong?
>
> http://www.eblah.com/justin/breakable.html
>
> You should get two alert popups. One should say object (it's the form
> element) and the other should show:
>
> function () {
>     var a = update([this], arguments);
>     return __method.apply(null, a);
>
> }
>
> In IE you'll get the first popup, but the second one will be
> "undefined". It's like Prototype isn't completely extending the DOM as
> it used to in Prototype 1.6.

-- 
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.

Reply via email to