[ https://issues.apache.org/struts/browse/WW-2058?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=44400#action_44400 ]
Frederic commented on WW-2058: ------------------------------- This solution doesn't work if you have table inside table because the solution get rows from the first table found. i propose another solution: function clearErrorMessages(form) { // get field table var rows = form.getElementsByTagName("tr"); if (rows == null){ return; } for(var i = 0; i < rows.length; i++) { var r = rows[i]; if (r.getAttribute("errorFor")) { rows[i].parentNode.removeChild(rows[i]); } } } This solution get all "tr" inside the form and not alone the tr of the first table found. tested with FF 2.0.0.15 and IE 7.0.5730.13 > 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.11 > Environment: Firefox and IE > 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.