You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Andrew Kelly (JIRA)" <ji...@apache.org> on 2007/06/05 08:26:27 UTC

[jira] Commented: (STR-1709) [taglib] Add check for nonexistent form field in focus javascript

    [ https://issues.apache.org/struts/browse/STR-1709?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_41167 ] 

Andrew Kelly commented on STR-1709:
-----------------------------------

The code I see output by struts 1.3.9 is

<script type="text/javascript">
  var focusControl = document.forms["BookForm"].elements["bookId"];

  if (focusControl.type != "hidden" && !focusControl.disabled && focusControl.style.display != "none") {
     focusControl.focus();
  }
</script>

The output of this should be changed to 

<script type="text/javascript">
  var focusControl = document.forms["BookForm"].elements["bookId"];

  if (focusControl != null && focusControl.type != "hidden" && !focusControl.disabled && focusControl.style.display != "none") {
     focusControl.focus();
  }
</script>

The extra check at the start ensure that you don't get "Object has no properties" errors in the javascript console.

Andy.


> [taglib] Add check for nonexistent form field in focus javascript
> -----------------------------------------------------------------
>
>                 Key: STR-1709
>                 URL: https://issues.apache.org/struts/browse/STR-1709
>             Project: Struts 1
>          Issue Type: Improvement
>          Components: Taglibs
>    Affects Versions: 1.1 Final
>         Environment: Operating System: other
> Platform: Other
>            Reporter: Jonathan Gritzman
>            Assignee: Struts Developers
>            Priority: Minor
>
> After processing the <html:form> tag, some javascript is displayed to force the
> focus to one of the components in the form. However, it is possible that the
> form field may not exist or may become a label if a user doesn't have modify
> access to the field. In this case a javacript error of 'Object Not Found' is
> displayed in a dialog box when the page is loaded.
> The existing javascript focuses into the form field provided the field isn't hidden.
> However, an additional check should be performed to ensure that the form field
> exists. Only then (in addition to the field not being hidden) should the
> javascript move the focus to the field.
> Resolution
> ----------
> In the FormTag's doEndTag() method a call is made to renderFocusJavascript().
> The renderFocusJavascript() method does the following:
>         results.append("  if (focusControl.type != \"hidden\") {");
> Change this to:
> //        Was previously setting the focus to the first text component
> //        if it wasn't a hidden field.
> //        Add an extra check to verify that the field exists.
>         results.append("  if (! focusControl.type === undefined && ");
>         results.append("      focusControl.type != \"hidden\") {");

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.