Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Christian Kröll am 07.08.12 - 14:30:35

Titel: Webform speichert keine Werte wenn mit IE9 oder Opera 12
Beitrag von: Christian Kröll am 07.08.12 - 14:30:35
Hallo,

ein Webformular bereitet mir Kopfschmerzen: Ein simples Formular mit ein paar Eingabefeldern soll via Webbrowser befüllt und gespeichert werden und das gespeicherte Dokument wird via $$Return-Feld dem User nochmals angezeigt.

Der Notes-eigene Button ist ausgeblendet; zum Speichern verwende ich
Code
<input type=button value="Senden" onclick="document.forms[0].submit();">
Das Dokument wird auch gespeichert, nur bleiben alle Felder leer. Verwende ich Mozilla oder Chrome - kein Problem.

Die Suche hier war erfolglos - vielleicht/wahrscheinlich habe ich auch nur die falschen Begriffe verwendet.

Vielen Dank schonmal vorab



Titel: Re: Webform speichert keine Werte wenn mit IE9 oder Opera 12
Beitrag von: mezz am 07.08.12 - 15:46:57
Evtl. ein Fehler im HTML, je nach Browserengine wirds dann halt "repariert" oder auch nicht.
Kannst ja einfach mal die Requests vergleichen (z.B. mit Wireshark die Pakete aufzeichen und auswerten).
Titel: Re: Webform speichert keine Werte wenn mit IE9 oder Opera 12
Beitrag von: Jörg Barth am 07.08.12 - 16:08:37
Statt Wireshark kann man auch Fiddler benutzen,
gibt's unter http://www.fiddler2.com/fiddler2/

Gruß

Jörg
Titel: Re: Webform speichert keine Werte wenn mit IE9 oder Opera 12
Beitrag von: m3 am 07.08.12 - 19:36:45
So, ich muss jetzt einfach fragen: Warum diese in keinster weise barrierefreie JS Kruecke anstatt einen normalen "Submit" Button zu verwenden?

Zum Problem: Interessant waere hier auch der FORM Tag, damit wir die Aktion sehen, die hinter dem Form liegt.
Titel: Re: Webform speichert keine Werte wenn mit IE9 oder Opera 12
Beitrag von: Christian Kröll am 07.08.12 - 21:58:59
Martin, die Krücke ist ziemlich alt. Mit dem Standard-Button funktioniert es leider auch nicht.

So gelöst:
Ich habe sukzessiv die Maske abgespeckt. In der Maske gab es - Ihr kennt es von den meisten Webseiten - ein Suchfeld. Nehme ich das Feld raus, funktioniert die Maske in allen Browsern. Wieder rein, dann macht es wieder "Peng".

Ich verstehe allerdings der Hintergrund nicht. Das Suchfeld ist ein zur Anzeige berechnetes Feld:
Code
_database := @ReplaceSubstring (@Subset (@DbName; -1); "\\" : " "; "/" : "+");
"[</FORM><FORM METHOD=post ACTION=\"/" + _database + "/ViewSearch?CreateDocument\" ENCTYPE=\"multipart/form-data\">" +
"<INPUT NAME=\"SearchString\" MAXLENGTH=\"40\" value=\"SUCHE\">" +
"<INPUT TYPE=Submit Value=\"Go!\"></Form>]"

Das erste
Code
</FORM>
kann ich auch weglassen, Ergebnis bleibt gleich, nur das dies nicht mehr W3C-konform ist (Form in der Form)

Wisst Ihr vielleicht, was den IE und Opera an dem Code in dem Suchfeld stört??
Titel: Re: Webform speichert keine Werte wenn mit IE9 oder Opera 12
Beitrag von: m3 am 08.08.12 - 07:48:35
Ja, das nennt sich "Einhalten von Standards".

W3C XHTML specification, Section B. "Element Prohibitions":
"form must not contain other form elements."

HTML 3.2 spec, FORMS section:
"Every form must be enclosed within a FORM element. There can be several forms in a single document, but the FORM element can't be nested."
Titel: Re: Webform speichert keine Werte wenn mit IE9 oder Opera 12
Beitrag von: Ayhan am 08.08.12 - 09:12:47
A) m3 hat recht

B) dein document.forms[0].submit() submittet sozusagen die such-form, aber nicht deine main-form.

Lösung)

Suchmaske:
_database := @ReplaceSubstring (@Subset (@DbName; -1); "\\" : " "; "/" : "+");
"[</FORM><FORM METHOD=post ACTION=\"/" + _database + "/ViewSearch?CreateDocument\" ENCTYPE=\"multipart/form-data\">" +
"<INPUT NAME=\"SearchString\" MAXLENGTH=\"40\" value=\"SUCHE\">" +
"<INPUT TYPE=Submit Value=\"Go!\"></Form><form action="<HIER.DIE.FORM.ACTION.DEINER.MAIN.FORM.HINZUFÜGEN[im quellcode direct nach dem body tag>"....>]"

Dein input type submit änderst dann wie folgt ab:
<input type=button value="Senden" onclick="document.forms[1].submit();">
Titel: Re: Webform speichert keine Werte wenn mit IE9 oder Opera 12
Beitrag von: Christian Kröll am 08.08.12 - 11:02:07
Danke Ayhan, ziemlich simpel

Erstaunlich bleibt allerdings, dass Safari, Mozilla, Chrome es trotz des Fehlers geschafft haben.

Immer wieder cool mit Euch, herzlichen Dank!