On Feb 14, 7:25 pm, perk <phieduren...@gmail.com> wrote:
> At first I thought this was a cross-browser issue of Prototype when
> Form.Element.present() used on a select box returned "true" on Firefox
> but not on IE when a non-empty OPTION field was selected.
> Later then, I realized that this method was in fact just meant for
> text inputs (as clearly stated in the documentation: "Returns true if
> a text input has contents, false otherwise.").
> Still, I think it would be nice to have the functionality of the
> Form.Element.present method extended so that the following example
> would work on all browsers the way I thought it would at first
> ("false" when no or the empty option is selected, "true" otherwise):
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
> <html>
>   <head>
>     <title>Test</title>
>     <script type="text/javascript" src="prototype.js"></script>
>     <script type="text/javascript">
>     document.observe("dom:loaded", function () {
>       $("mySelect").observe("change", function () {
>         alert($("mySelect").present() ? "select set" : "select not
> set")
>       });
>     });
>     </script>
>   </head>
>   <body>
>     <select id="mySelect">
>       <option></option>
>       <option>test</option>
>     </select>
>   </body>
> </html>
> What do you think?

The problem actually seems to be in `Element#getValue` returning
"" (empty string) in Firefox (3.0.5), Safari (3.1) and Opera (9.61)
for a value of a select element with `selectedIndex == -1` (i.e. the
one with no options selected), while returning `null` in IE. If you
look at the DOM L2 specs for `HTMLSelectElement` [1], you can see that
`value` property is defined as that of type `DOMString`. `DOMString`
in its turn is essentially a character string encoded in UTF-16 [2].
This makes IE's `null` a bogus (what a surprise!).

Unless I'm missing something, we should fix `getValue` foremost.

Would you mind filing a ticket?

[1] http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-94282980
[2] http://www.w3.org/TR/DOM-Level-2-Core/core.html#DOMString

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 
For more options, visit this group at 

Reply via email to