cgicorner.ch

Informationen rund um Perl/CGI

Sie sind hier: Home > Forum
Yet Another Bulletin Board

Willkommen, Gast. Bitte Einloggen oder Registrieren.
23. Oktober 2021 um 17:16

Übersicht Übersicht Hilfe Hilfe Suche Suche Mitglieder Mitglieder Einloggen Einloggen Registrieren Registrieren
cgicorner.ch « Formmailer nicht mit Entertaste absenden »


   cgicorner.ch
   Hilfe
   HTML

   Formmailer nicht mit Entertaste absenden
« Vorheriges Thema | Nächstes Thema »
Seiten: 1  Antworten Antworten Bei Antworten benachrichtigen Bei Antworten benachrichtigen Drucken Drucken
   Autor  Thema: Formmailer nicht mit Entertaste absenden  (Gelesen 5248 mal)
rlo
YaBB Newbie
*





   


Beiträge: 5
Formmailer nicht mit Entertaste absenden
« am: 06. Februar 2008 um 14:54 »
Zitieren Zitieren Bearbeiten Bearbeiten

Hallo,
 
ich nutze den Formmailer mit voller Zufriedenheit.  
 
Ein Problem habe ich festgestellt das ich nicht lösen konnte. Ich will, dass das Formular nicht per Entertaste abgesendet wird.  
Beim Googlen  habe ich vieles dazu gefunden, jedoch nichst das mir so richtig zusagte.
Gibt es hierzu eine einfache Möglichkeit?
Über einen Tipp freue ich mich.
gespeichert


Gruß

RLO

Kaum macht man's richtig, schon funktionierts.
www.rolandloeffler.de www.mei-gehts-mir-guat.de www.focus83.de
cgicorner.ch
YaBB Administrator
*****




Board Admin

   
Homepage E-Mail

Geschlecht: male
Beiträge: 790
Re: Formmailer nicht mit Entertaste absenden
« Antworten #1 am: 06. Februar 2008 um 20:36 »
Zitieren Zitieren Bearbeiten Bearbeiten

Hallo Rlo
 
In der Tat ist das nicht so einfach, da a) die Browser unterschiedlich reagieren (einige senden das Formular ab, andere "klicken" auf den ersten Button) und b) dies nur clientseitig (sprich mit Javascript) möglich ist. Empfehlen würde ich es nicht, da es nicht den normalen Gewohnheiten des Surfens entspricht und du schnell mal echte User aussperrst (Java-Script deaktiviert, exositscher Browser etc.). Das Prinzip würde aber etwa so aussehen:
 
<html>
<body>
 
<form action="/cgi-bin/tools/parameters.cgi" method="get" name="myform" onSubmit="if (document.myform.manuell.value == 1) { return true; } else { return false; }">
<input type="hidden" name="manuell" value="0" />
 
<input type="text" name="textfeld" />
<input type="submit" value="" style="visibility: hidden; width: 1px" />
<input type="submit" value="Absenden" onClick="document.myform.manuell.value=1"/>
 
</form>
 
</body>
</html>

 
Du hast also im Formular einen onSubmit-Befehl, der den Inhalt des Feldes "manuell" prüft. Ist dieser 1 liefert er true zurück und das Formular wird übermittelt, ansonsten false und dann passiert nichts.
 
Dann hast du ein verstecktes Feld "manuell" mit dem Standard-Wert 0 (führt also dazu, dass du das Formular nicht absenden kannst).
 
Nun folgen die normalen Formular-Felder, hier nur ein Textfeld.
 
Da nun einige Browser den ersten Button anklicken fügen wir halt einen ein. Mittels CSS wird er versteckt und verkleinert.
 
Nun folgt der echte Absenden-Button. Dort hat es ein "onClick", der den Wert von manuell auf 1 setzt.
 
Die Sache sieht nun so aus:
 
Formular wird initalisiert --> manuell = 0 --> User klickt Enter --> Formular wird entweder übermittelt oder der erste (unsichtbare) Button wird angeklickt --> manuell wird ausgelesen --> Wert ist 0 --> return False --> kein Absenden.
 
Formular wird initalisiert --> manuell = 0 --> User klickt auf Absenden-Button --> onClick setzt manuell = 1 --> manuell wird ausgelesen --> Wert ist 1 --> return True --> Formular wird abgeschickt.
 
Aber eben: wirklich ein Gebastel. Um unvollständige Formulare zu verhindern würde ich die Definition von Pflichtfeldern bevorzugen, im Optimalfall ein Pflichtfeld möglichst am Ende des Formulares, dann ist sicher schon viel ausgefüllt. Obiges Beispiel müsste eigentlich mit aktuellen Browsern funktionieren, ob du dich aber glücklich machst.......
 
Ich hoffe, das hilft dir weiter.
 
Gruss
Jürg
gespeichert

cgicorner.ch - Informationen rund um Perl/CGI
Jürg Sommer
rlo
YaBB Newbie
*





   


Beiträge: 5
Re: Formmailer nicht mit Entertaste absenden
« Antworten #2 am: 07. Februar 2008 um 07:17 »
Zitieren Zitieren Bearbeiten Bearbeiten

Hallo Jürg,
 
Danke erst mal. Das hilft jedenfalls erst mal weiter.
 
Du schreibst von einem Pflichtfeld am Ende. Sowas wie ein Bestätigungsfeld, Checkbox, das die User gezielt klicken müssen um die Vollständigkeit des Formulars zu bestätigen.
Ist das Ende vor oder nach dem Absendebutton gemeint?
 
Wie aufwändig ist es dass dies im Script geprüft und dabei dem User die Inhalte gezeigt werden und bei Fehlern wieder das Formular aufgerufen werden kann?
 
Grüße
 
Roland
gespeichert


Gruß

RLO

Kaum macht man's richtig, schon funktionierts.
www.rolandloeffler.de www.mei-gehts-mir-guat.de www.focus83.de
cgicorner.ch
YaBB Administrator
*****




Board Admin

   
Homepage E-Mail

Geschlecht: male
Beiträge: 790
Re: Formmailer nicht mit Entertaste absenden
« Antworten #3 am: 07. Februar 2008 um 17:31 »
Zitieren Zitieren Bearbeiten Bearbeiten

Hallo Roland
 
Ja, etwas in dem Stil. Man kann es natürlich auch auffällig oder etwas weniger auffällig machen. Ich weiss nicht genau, wie den Formular aussehen soll, ich würde aber ein möglichst sinnvolles Pflichtfeld nach unten setzen, z.B. am Schluss (vor dem Absenden-Button)
 
[ ]  Ja, ich habe die AGBs gelesen
Sind Sie an News per E-Mail über unser Unternehmen interessiert?   o ja o nein
[ ] Auf welche Weise möchten Sie gerne durch uns kontaktiert werden?     o E-Mail   o telefonisch
Wie wurden Sie auf uns aufmerksam? ______________
 
Also möglichst unverbindlich ein Feld, das der Benutzer ausfüllt und eine Auswahl treffen muss. Notfalls darf es aber auch etwas aufdringlicher sein:
 
[ ] alle Angaben sind vollständig und entsprechen der Wahrheit
 
FormMailer kann alles verarbeiten, dezent wirkt etwas professioneller (und wenn man die Formulare anschaut, welche im Internet kursieren ist dies häufig auch so gehandhabt). Wenn du mit Secure-Codes aus Spam-Schutzgründen arbeitest kannst du auch diesen an den Schluss setzen, dass ist auch ein Pflichtfeld...
 
 
Zu deiner zweiten Frage: FormMailer unterstützt in der neusten Version die Anzeige des Formulares bei Fehlern. Im ZIP-Archiv befindet sich eine Demo (simpleform).
 
Kurz zum Vorgehen:
- HTML-Formular mit Dateiendung .template im Formmailer-Verzeichnis speichern (hier simpleform.template)
- NOTOKURL auf Formular definieren (hier simpleform)
- Eingabefelder ergänzen, aus
  <input type="text" name="test">
  wird
  <input type="text" name="test" value="<!--test-->">
dies führt dazu, dass die eingegebenen Werte wieder im Formular angezeigt werden.
 
Fehlermeldungen können so ausgegeben werden:
<!--if:action!parsetemplate§<p class="sysMsg">Es wurden nicht alle erforderlichen Felder korrekt ausgefüllt.</p>-->
 
Aufruf des Formulares dann nicht via HTML-Formular, sondern mit http://localhost/cgi-bin/formmailer/formmailer.cgi?action=parsetemplate& amp;template=simpleform
(wobei URL und Templatename angepasst werden müssen).
 
Dies führt dazu, dass bei Fehlern anstelle einer Fehlerseite wieder das Formular angezeigt wird. Mit benutzerdefiniertem Fehlertext und ausgefüllten Formularwerten. Die Markierung von Feldern mit fehlender Eingabe wäre theoretisch mit IF-Abfragen möglich, ist aber mühsam. Über die Definition von Pflichtfeldern, Mailfeldern etc. gibt die Dokumentation weitere Infos, so auch zu HTML-Formulartemplates (Kapitel 4.5). Ich hoffe, das hilft dir weiter.
 
Gruss
Jürg
 
PS: Ich bin ab Samstag übrigens für eine Woche in den Ferien. Während dieser Zeit werden E-Mails und Forenbeiträge nicht beantwortet.
gespeichert

cgicorner.ch - Informationen rund um Perl/CGI
Jürg Sommer
rlo
YaBB Newbie
*





   


Beiträge: 5
Re: Formmailer nicht mit Entertaste absenden
« Antworten #4 am: 07. Februar 2008 um 20:05 »
Zitieren Zitieren Bearbeiten Bearbeiten

Hallo Jürg,
 
schau dir bitte das Formular an: http://www.meigehtsmirguat.de/formulare/bestellformular.php
 
wenn ich zum Beispiel beim viertletzten Feld eine Zahl eintrage und dann auf Enter drücke wird das Formular abgeschickt obwohl noch Pflichtfelder kommen.
 
Nun bin ich etwas verunsichert was ich machen soll.
 
Gruß
 
Roland
gespeichert


Gruß

RLO

Kaum macht man's richtig, schon funktionierts.
www.rolandloeffler.de www.mei-gehts-mir-guat.de www.focus83.de
cgicorner.ch
YaBB Administrator
*****




Board Admin

   
Homepage E-Mail

Geschlecht: male
Beiträge: 790
Re: Formmailer nicht mit Entertaste absenden
« Antworten #5 am: 07. Februar 2008 um 23:14 »
Zitieren Zitieren Bearbeiten Bearbeiten

Hallo Roland
 
Ich hoffe, ich habe dies jetzt richtig verstanden: du füllst von oben her aus und drückst nach dem ersten Songtitel auf Enter. OK, dann wird das Formular abgeschickt: zwar hat es noch Pflichtfelder, die sind aber mit einem 0 vorbelegt, somit nicht leer und das ist gültig. Alternativen:
 
- Standard-Wert 0 nicht vorgeben
- Dropdown mit "bitte wählen" - 0, 1, 2, ... 9 statt Eingabefeld
- Unten statt den Info-Text eine Checkbox: "[  ] Ich bin mit den [Versandbedingungen] einverstanden. Checkbox als NNUL-Feld definieren. Da Checkboxen leer nicht übermittelt werden und ein NNUL-Check nicht richtig funktioniert oben noch ein verstecktes Feld, also:
<input type="hidden" name="NNUL_AGB" value="" />
<input type="checkbox" name="NNUL_AGB" value="einverstanden" /> Ich bin mit den.....
- Songtitelauswahl vor Adressblock nehmen
- "Zusatz-Services" unten anhängen, wie z.B.
  Als Geschenk verpacken    o ja    o nein
  Mit Autogramm des Künstlers    o ja    o nein
 
Man kann das Formular also mit etwas Kreativität schon so gestalten, dass Enter nichts nützt, ohne die Java-Script Prüfung meiner ersten Antwort einzufügen (auch das geht aber). Ich persönlich finde die Variante Songtitel-Auswahl vor Adressblock die Beste: unauffällig, durchaus üblich (man denke an Warenkörbe etc. da wählt man die Produkte sogar viel früher aus als die Adresseingabe, auch im täglichen Leben geht man in einen Supermarkt, sucht sich die Produkte aus und geht dann zur Kasse, also Produktauswahl vor Zahlung/Lieferadresse etc.). Wenn du die Blöcke tauschst hast du E-Mail als letztes Feld und das ist ein Pflichtfeld.
 
Vielleicht hast du noch andere, bessere Ideen.
 
Gruss
Jürg
gespeichert

cgicorner.ch - Informationen rund um Perl/CGI
Jürg Sommer
rlo
YaBB Newbie
*





   


Beiträge: 5
Re: Formmailer nicht mit Entertaste absenden
« Antworten #6 am: 08. Februar 2008 um 08:52 »
Zitieren Zitieren Bearbeiten Bearbeiten

Hallo Jürg,
 
ja, mit dem versteckten Feld und einer Checkbox als Pflichtfeld ist das gut.. Das werde ich einbauen. Da die Checkbox als Pflichtfeld definiert ist, wird das Formular nicht abgesendet sondern kommt mit einem Fehler zurück.
 
Na denn , erst mal Danke und einen schönen Urlaub für dich.
gespeichert


Gruß

RLO

Kaum macht man's richtig, schon funktionierts.
www.rolandloeffler.de www.mei-gehts-mir-guat.de www.focus83.de
rlo
YaBB Newbie
*





   


Beiträge: 5
Re: Formmailer nicht mit Entertaste absenden
« Antworten #7 am: 08. Februar 2008 um 16:47 »
Zitieren Zitieren Bearbeiten Bearbeiten

Hallo Jürg,
 
ich habe das mit dem versteckten Feld und einer Checkbox gelöst. Dein Vorsachlag ist sehr gut.
 
Vielen Dank und einen erholsamen Urlaub.
gespeichert


Gruß

RLO

Kaum macht man's richtig, schon funktionierts.
www.rolandloeffler.de www.mei-gehts-mir-guat.de www.focus83.de
Seiten: 1  Antworten Antworten Bei Antworten benachrichtigen Bei Antworten benachrichtigen Drucken Drucken

« Vorheriges Thema | Nächstes Thema »

cgicorner.ch » Powered by YaBB 1 Gold - SP3!
YaBB © 2000-2004. All Rights Reserved.