struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lee Cheng Wei (JIRA)" <j...@apache.org>
Subject [jira] Commented: (WW-2058) Client side validation in xhtml template and clearErrorMessages not working in firefox with hidden fields
Date Tue, 08 Jan 2008 17:04:05 GMT

    [ https://issues.apache.org/struts/browse/WW-2058?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=42952#action_42952
] 

Lee Cheng Wei commented on WW-2058:
-----------------------------------

I'm using Struts 2.0.11, IE 7.0.6 and FF 2.0.0.11. The error messages are duplicated each
time the form is submitted. Verified that the xhtml template is using the fix (JS). Tried
to add alert() to end of the JS function but it doesn't get called. The form is a simple login
form with no hidden field. Is this a problem with the browser or Javascript fix?

> Client side validation in xhtml template and clearErrorMessages not working in firefox
with hidden fields
> ---------------------------------------------------------------------------------------------------------
>
>                 Key: WW-2058
>                 URL: https://issues.apache.org/struts/browse/WW-2058
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Plugin - Tags
>    Affects Versions: 2.0.8, 2.0.9
>         Environment: Firefox
>            Reporter: Max Pimm
>            Assignee: James Holmes
>            Priority: Minor
>             Fix For: 2.0.10, 2.1.0
>
>         Attachments: validation.js.patch, validation.js.patch
>
>
> The method clearErrorMessages in the xhtml client side validation template (template/xhtml/validation.js)
fails in firefox. This results in the error messages being duplicated each time the form is
submitted.
> The problem arises from the first three lines of code in the function:
>     var table = form.childNodes[1];
>     if( typeof table == "undefined" ) {
>         table = form.childNodes[0];
>     }
> This presumes that the first (or second) node of the form element is the field table.
However in firefox hidden fields within a form are moved in the DOM to the top of its children.
Thus wherever you put the hidden elements in the form they appear in the DOM at the top. The
same problem does not occur in internet explorer or if no hidden fields are present. I have
not tried other browsers.
> I have replaced these three lines with the patch:
> // get field table
> var table;
> for (var i = 0; i < form.childNodes.length; i++){
>     if (form.childNodes[i].tagName != null && form.childNodes[i].tagName.toLowerCase()
== "table"){
>         table = form.childNodes[i];
>         break;
>     }
> }
> if (table == null){
>     return;
> }
> This solves the problem.

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


Mime
View raw message