CLONE -Client side validation in xhtml template and clearErrorMessages not 
working in firefox with hidden fields
----------------------------------------------------------------------------------------------------------------

                 Key: WW-2409
                 URL: https://issues.apache.org/struts/browse/WW-2409
             Project: Struts 2
          Issue Type: Bug
          Components: Plugin - Tags
    Affects Versions: 2.0.11
         Environment: Firefox and IE
            Reporter: Lee Cheng Wei
            Assignee: James Holmes
            Priority: Minor
             Fix For: 2.0.10, 2.1.0


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.

Reply via email to