| Summary: | [Test Case] Input fields outside forms are submitted | ||
|---|---|---|---|
| Product: | [Applications] konqueror | Reporter: | Jörg Afflerbach <nospam> | 
| Component: | khtml forms | Assignee: | Konqueror Bugs <konqueror-bugs-null> | 
| Status: | RESOLVED FIXED | ||
| Severity: | normal | ||
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | openSUSE | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
| SVN commit 517005 by ivor:
Replace one form reattach hack with another, pending a  better fix.
BUG: 122968
BUG: 122273
CCBUG: 116790
 M  +1 -5      html_formimpl.cpp  
 M  +9 -0      htmlparser.cpp  
--- branches/KDE/3.5/kdelibs/khtml/html/html_formimpl.cpp #517004:517005
@@ -886,11 +886,7 @@
     {
         if( p->id() == ID_FORM )
             return static_cast<HTMLFormElementImpl *>(p);
-        NodeImpl *s = p->previousSibling();
-        if (!s)
-            p = p->parentNode();
-        else
-            p = s;
+        p = p->parentNode();
     }
 #ifdef FORMS_DEBUG
     kdDebug( 6030 ) << "couldn't find form!" << endl;
--- branches/KDE/3.5/kdelibs/khtml/html/htmlparser.cpp #517004:517005
@@ -1388,6 +1388,15 @@
         blockElem->removeChild(currNode, exceptionCode);
         newNode->appendChild(currNode, exceptionCode);
         currNode = nextNode;
+
+ // TODO - To be replaced.
+        // Re-register form elements with currently active form, step 1 will have removed them
+        if (form)
+        {
+            HTMLGenericFormElementImpl *e = static_cast<HTMLGenericFormElementImpl *>(currNode);
+            if (e)
+                form->registerFormElement(e);
+        }
     }
 
     // Step 4: Place |newNode| under |blockElem|.  |blockElem| is still out of the document, so no
 | 
Version: (using KDE KDE 3.5.1) Installed from: SuSE RPMs OS: Linux Konqueror submits form elements which are outside of forms, which IMHO it should not. See test case below: Element "B" should not be submitted. This actually did work in KDE 3.5.0. It also works in Firefox, Safari and MSIE. --------------------------------------------------------------------- <?xml version="1.0" encoding="ISO-8859-15"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Form Test</title> </head> <body> <form action="#"> <fieldset> <input type="text" name="A" value="visible"/> <input type="submit"/> </fieldset> </form> <div style="display: none"> <!-- This form element is outside the form and should therefore not be submitted. --> <input type="text" name="B" value="hidden"/> </div> </body> </html>