You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Jesse Kuhnert (JIRA)" <ta...@jakarta.apache.org> on 2006/02/09 23:45:56 UTC

[jira] Created: (TAPESTRY-863) Form.js set_focus incompatible with ie

Form.js set_focus incompatible with ie
--------------------------------------

         Key: TAPESTRY-863
         URL: http://issues.apache.org/jira/browse/TAPESTRY-863
     Project: Tapestry
        Type: Bug
    Versions: 4.0    
 Environment: ie 
    Reporter: Jesse Kuhnert
     Fix For: 4.0.1
 Attachments: FormNew.js

I have some issues with the Tapestry.set_focus() method in the new Form
JavaScript library in Tapestry 4.0 (org.apache.tapestry.form/Form.js:86).

Tapestry.set_focus = function (field)
{
   if (typeof field == "string")
     field = this.find(field);

   if (field.focus)
       field.focus();

   if (field.select)
       field.select();
}

This same Focus JavaScript existed in the previous release, but was only
called along with instances of the ValidField component. Now that any
field in 4.0 can be validated, it's called in practically every instance
of a Form. With this new widespread use I am proposing a more robust
implementation of the JavaScript to fix some issues I've seen.

Here are the issues:

1. When calling set_focus() on a Submit button, the button text is
selected after focusing.

       This is an IE only issue. The select() method is specified in
W3C's standards to
       only select the text of editable inputs like <input
type="text"/> and <textarea/>.
       IE is ignoring this part of the standard (big surprise).

2. When calling set_focus() on a disabled form input, JavaScript error
alerts ensue.

      I saw this was fixed in a recent update. However, the fix was
made in the Java and
      not the JavaScript. This is nice, but when making JavaScript
fixes I tend to go overkill
      and fix on the Server side and the Client side in case something
gets out of sync.

3. When calling set_focus on a hidden (as in CSS) form input, JavaScript
error alerts ensue.

      Firefox ignores this problem quite well -- this is yet another IE
issue that is very annoying.
      It took me a long time to find a JavaScript fix for this.


Here is my proposed new JavaScript:

Tapestry.set_focus = function (field)
{
   if (typeof field == "string")
   {
       field = this.find(field);

/* Make sure the field was found to avoid null pointer. */
       if (field)
      {

/* Check for disabled and hidden fields. */
           if (!field.disabled && field.clientWidth > 0)
           {

               if (field.focus)
                   field.focus();

/* Check the IE-only contentEditable property to know which objects to
select text on. */
               if (field.isContentEditable || field.isContentEditable
== null)
                   if (field.select)
                       field.select();

           }
      }
   }
}

I've attached an HTML file, the original Form.js, and my new FormNew.js
that can be used to re-produce the issues and test the fixes.

Thanks!


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org


[jira] Assigned: (TAPESTRY-863) Form.js set_focus incompatible with ie

Posted by "Jesse Kuhnert (JIRA)" <ta...@jakarta.apache.org>.
     [ http://issues.apache.org/jira/browse/TAPESTRY-863?page=all ]

Jesse Kuhnert reassigned TAPESTRY-863:
--------------------------------------

    Assign To: Jesse Kuhnert

> Form.js set_focus incompatible with ie
> --------------------------------------
>
>          Key: TAPESTRY-863
>          URL: http://issues.apache.org/jira/browse/TAPESTRY-863
>      Project: Tapestry
>         Type: Bug
>     Versions: 4.0
>  Environment: ie 
>     Reporter: Jesse Kuhnert
>     Assignee: Jesse Kuhnert
>      Fix For: 4.0.1
>  Attachments: FormNew.js
>
> I have some issues with the Tapestry.set_focus() method in the new Form
> JavaScript library in Tapestry 4.0 (org.apache.tapestry.form/Form.js:86).
> Tapestry.set_focus = function (field)
> {
>    if (typeof field == "string")
>      field = this.find(field);
>    if (field.focus)
>        field.focus();
>    if (field.select)
>        field.select();
> }
> This same Focus JavaScript existed in the previous release, but was only
> called along with instances of the ValidField component. Now that any
> field in 4.0 can be validated, it's called in practically every instance
> of a Form. With this new widespread use I am proposing a more robust
> implementation of the JavaScript to fix some issues I've seen.
> Here are the issues:
> 1. When calling set_focus() on a Submit button, the button text is
> selected after focusing.
>        This is an IE only issue. The select() method is specified in
> W3C's standards to
>        only select the text of editable inputs like <input
> type="text"/> and <textarea/>.
>        IE is ignoring this part of the standard (big surprise).
> 2. When calling set_focus() on a disabled form input, JavaScript error
> alerts ensue.
>       I saw this was fixed in a recent update. However, the fix was
> made in the Java and
>       not the JavaScript. This is nice, but when making JavaScript
> fixes I tend to go overkill
>       and fix on the Server side and the Client side in case something
> gets out of sync.
> 3. When calling set_focus on a hidden (as in CSS) form input, JavaScript
> error alerts ensue.
>       Firefox ignores this problem quite well -- this is yet another IE
> issue that is very annoying.
>       It took me a long time to find a JavaScript fix for this.
> Here is my proposed new JavaScript:
> Tapestry.set_focus = function (field)
> {
>    if (typeof field == "string")
>    {
>        field = this.find(field);
> /* Make sure the field was found to avoid null pointer. */
>        if (field)
>       {
> /* Check for disabled and hidden fields. */
>            if (!field.disabled && field.clientWidth > 0)
>            {
>                if (field.focus)
>                    field.focus();
> /* Check the IE-only contentEditable property to know which objects to
> select text on. */
>                if (field.isContentEditable || field.isContentEditable
> == null)
>                    if (field.select)
>                        field.select();
>            }
>       }
>    }
> }
> I've attached an HTML file, the original Form.js, and my new FormNew.js
> that can be used to re-produce the issues and test the fixes.
> Thanks!

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org


[jira] Updated: (TAPESTRY-863) Form.js set_focus incompatible with ie

Posted by "Jesse Kuhnert (JIRA)" <ta...@jakarta.apache.org>.
     [ http://issues.apache.org/jira/browse/TAPESTRY-863?page=all ]

Jesse Kuhnert updated TAPESTRY-863:
-----------------------------------

    Attachment: FormNew.js

> Form.js set_focus incompatible with ie
> --------------------------------------
>
>          Key: TAPESTRY-863
>          URL: http://issues.apache.org/jira/browse/TAPESTRY-863
>      Project: Tapestry
>         Type: Bug
>     Versions: 4.0
>  Environment: ie 
>     Reporter: Jesse Kuhnert
>      Fix For: 4.0.1
>  Attachments: FormNew.js
>
> I have some issues with the Tapestry.set_focus() method in the new Form
> JavaScript library in Tapestry 4.0 (org.apache.tapestry.form/Form.js:86).
> Tapestry.set_focus = function (field)
> {
>    if (typeof field == "string")
>      field = this.find(field);
>    if (field.focus)
>        field.focus();
>    if (field.select)
>        field.select();
> }
> This same Focus JavaScript existed in the previous release, but was only
> called along with instances of the ValidField component. Now that any
> field in 4.0 can be validated, it's called in practically every instance
> of a Form. With this new widespread use I am proposing a more robust
> implementation of the JavaScript to fix some issues I've seen.
> Here are the issues:
> 1. When calling set_focus() on a Submit button, the button text is
> selected after focusing.
>        This is an IE only issue. The select() method is specified in
> W3C's standards to
>        only select the text of editable inputs like <input
> type="text"/> and <textarea/>.
>        IE is ignoring this part of the standard (big surprise).
> 2. When calling set_focus() on a disabled form input, JavaScript error
> alerts ensue.
>       I saw this was fixed in a recent update. However, the fix was
> made in the Java and
>       not the JavaScript. This is nice, but when making JavaScript
> fixes I tend to go overkill
>       and fix on the Server side and the Client side in case something
> gets out of sync.
> 3. When calling set_focus on a hidden (as in CSS) form input, JavaScript
> error alerts ensue.
>       Firefox ignores this problem quite well -- this is yet another IE
> issue that is very annoying.
>       It took me a long time to find a JavaScript fix for this.
> Here is my proposed new JavaScript:
> Tapestry.set_focus = function (field)
> {
>    if (typeof field == "string")
>    {
>        field = this.find(field);
> /* Make sure the field was found to avoid null pointer. */
>        if (field)
>       {
> /* Check for disabled and hidden fields. */
>            if (!field.disabled && field.clientWidth > 0)
>            {
>                if (field.focus)
>                    field.focus();
> /* Check the IE-only contentEditable property to know which objects to
> select text on. */
>                if (field.isContentEditable || field.isContentEditable
> == null)
>                    if (field.select)
>                        field.select();
>            }
>       }
>    }
> }
> I've attached an HTML file, the original Form.js, and my new FormNew.js
> that can be used to re-produce the issues and test the fixes.
> Thanks!

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org


[jira] Resolved: (TAPESTRY-863) Form.js set_focus incompatible with ie

Posted by "Jesse Kuhnert (JIRA)" <ta...@jakarta.apache.org>.
     [ http://issues.apache.org/jira/browse/TAPESTRY-863?page=all ]
     
Jesse Kuhnert resolved TAPESTRY-863:
------------------------------------

    Resolution: Fixed

Patch applied. Thanks. 

> Form.js set_focus incompatible with ie
> --------------------------------------
>
>          Key: TAPESTRY-863
>          URL: http://issues.apache.org/jira/browse/TAPESTRY-863
>      Project: Tapestry
>         Type: Bug
>     Versions: 4.0
>  Environment: ie 
>     Reporter: Jesse Kuhnert
>     Assignee: Jesse Kuhnert
>      Fix For: 4.0.1
>  Attachments: FormNew.js
>
> I have some issues with the Tapestry.set_focus() method in the new Form
> JavaScript library in Tapestry 4.0 (org.apache.tapestry.form/Form.js:86).
> Tapestry.set_focus = function (field)
> {
>    if (typeof field == "string")
>      field = this.find(field);
>    if (field.focus)
>        field.focus();
>    if (field.select)
>        field.select();
> }
> This same Focus JavaScript existed in the previous release, but was only
> called along with instances of the ValidField component. Now that any
> field in 4.0 can be validated, it's called in practically every instance
> of a Form. With this new widespread use I am proposing a more robust
> implementation of the JavaScript to fix some issues I've seen.
> Here are the issues:
> 1. When calling set_focus() on a Submit button, the button text is
> selected after focusing.
>        This is an IE only issue. The select() method is specified in
> W3C's standards to
>        only select the text of editable inputs like <input
> type="text"/> and <textarea/>.
>        IE is ignoring this part of the standard (big surprise).
> 2. When calling set_focus() on a disabled form input, JavaScript error
> alerts ensue.
>       I saw this was fixed in a recent update. However, the fix was
> made in the Java and
>       not the JavaScript. This is nice, but when making JavaScript
> fixes I tend to go overkill
>       and fix on the Server side and the Client side in case something
> gets out of sync.
> 3. When calling set_focus on a hidden (as in CSS) form input, JavaScript
> error alerts ensue.
>       Firefox ignores this problem quite well -- this is yet another IE
> issue that is very annoying.
>       It took me a long time to find a JavaScript fix for this.
> Here is my proposed new JavaScript:
> Tapestry.set_focus = function (field)
> {
>    if (typeof field == "string")
>    {
>        field = this.find(field);
> /* Make sure the field was found to avoid null pointer. */
>        if (field)
>       {
> /* Check for disabled and hidden fields. */
>            if (!field.disabled && field.clientWidth > 0)
>            {
>                if (field.focus)
>                    field.focus();
> /* Check the IE-only contentEditable property to know which objects to
> select text on. */
>                if (field.isContentEditable || field.isContentEditable
> == null)
>                    if (field.select)
>                        field.select();
>            }
>       }
>    }
> }
> I've attached an HTML file, the original Form.js, and my new FormNew.js
> that can be used to re-produce the issues and test the fixes.
> Thanks!

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org