[TYPO3-german] Formhandler - 2 step form ajax Valdierung & submit/next geht nur in step 1

Matthias Eberlein skydivematy at gmail.com
Thu Jan 31 03:41:15 CET 2013


Hallo Reinhard,
entschuldigung Angenommen :-)
Ganz Ehrlich, ich bin Dankbar Überhaupt Gratis Support sozusagen zu 
bekommen. Egal ob es sich um Formhandler geht oder andere Probleme wo 
man nicht mehr weiter weiß.

OK. Nun bin ich schon seit einiger Zeit bei Diesem Multistep und anderen 
Forms und es scheint Fast zu Laufen. Aber nur Fast.

Irgendwie will Die Ajax Validierung nach step-1 nicht funktionieren. Das 
ist jetzt aber nicht das große Problem.

Ein Problem macht mir Kopfzerbrechen, und zwar folgendes. Um es besser 
zu veranschaulichen mal ein teil des scripts welches du ja kennst. aus 
dem basis für multisteps mit conditions ganz unten angehängt

Wie man sehen kann gibt es zu Auswahl 3 Options. Die ersten beiden 
Optionen gehen bis Step-5, die Option 3 Special besitzt jedoch nur 2 
steps. Wählt man nun Diese Option -> step 2 geht -> step 3 geht ->>> 
Submit geht nicht. Er versuch immer weite nach step 4 welches nicht 
Existiert. Kein Error Template missing oder der gleichen. Nur kein 
Submit möglich.
Alle anderen Optionen gehen alle ihre Steps sauber durch. Und das mit 
AJAX ;-)

Template von ###master_multipart-form-start auf ###master_form-start_ 
geändert.

Das andere welches ich nicht in den Griff bekommen ist das auf der Seite 
(startpage) Dieses Multistep Form enthalten ist und im Footer Bereich 
habe ich ein Newsletter Subscribe mit Name ,email Und Private Policity 
Checkbox incl Submit-ok Template. Alles required fields. Nach submit ist 
wird die erste Form (multistepform) Inaktiv.

Im Master Template sind für die submit Buttons KEINE 
###validation-status### enthalten. autoDisableSubmitButton = 0 Trotzdem 
bleib der Button  disabled="disabled"

Das gleiche Problem ist Umgekehrt. Wenn erst Die Multiform Submit und 
danach ein Newsletter gewählt wird ist Newsletter Inaktiv.

<input type="submit" name="newslettersubmit[step-2-next]" class="button 
submit" value="Send" id="newslettersubmit-submit" disabled="disabled"/>

Jede Form hat seine submitButtonSelector.
wie z.B Newslettersubmit
submitButtonSelector = #formhandler_newsletter_form #NewsletterSubmit 
INPUT[type=\'submit\']

Jede form hat Ihre ID
jquery alias habe ich auf $ für alle forms


Weiters Problem,

Selectbox Validierung
Folgendes Szenario.
Drei Optionen (vier)
0 Bitte Wählen Sie
1 Option 1
2 Option 2
3 Option 3
Geht man mit TAB die Form durch und wählt nichts mit der Maus aus der 
selectbox aus wird das "Bitte Wählen Sie" Validiert und auf OK gesetzt. 
Also hilft nur
option value=""></option>
für Position 0

OK. Damit kann man aber Leben, denn es gibt ja ein Label zur Selectbox.
Nur meine Frage, ist es nicht möglich die genaue Position zu Validieren?
  poss.0=notok
  poss.1=ok usw
In der Doku habe ich nichts gefunden.

Letztes Problem, ich kann nich von einem Step wieder zurrück zu dem 
vorherigen step.

###submit_step_[1]### Zeigt mit im source code den validen step zurück 
an aber es geht nur vor.
allowStepJumps = 1

Jetzt fällt mir grade ein ich habe das im ajax part???


OK, reich für heute. soll nicht wieder 7Uhr morgens werden.

Wäre Dankbar für den ein oder anderen Hinweis

Gruß
Matthias





if {
		1 {
			conditions.OR1.AND1 = position = Examples1
			isTrue {
				2 {
					templateSuffix = _example
				}
				3 {
					templateSuffix = _example1
				}
				4 {
					templateSuffix = _example3
				}
				5 {
					templateSuffix = _example4
				}
			}
		}
		2 {
			conditions.OR1.AND1 = position = Examples2
			isTrue {
				2 {
					templateSuffix = _example
				}
				3 {
					templateSuffix = _example1
				}
				4 {
					templateSuffix = _example3
				}
				5 {
					templateSuffix = _example4
				}
			}
		}
		3 {

			conditions.OR1.AND1 = position = Special
			isTrue {
				2 {
					templateSuffix = _special1
				}
				3 {
					templateSuffix = _special2
				}
			}
		}
	}





Am 30.01.2013 10:55, schrieb Reinhard Führicht:
> Hallo Matthias,
>
> das Problem ist folgendes:
>
> Du hast 2 unterschiedliche formIDs für die Steps. Durch den AJAX-Submit
> wird nicht die ganze Seite neu geladen, sondern nur das Formular.
>
> Dadurch kann Formhandler kein neues JavaScript mit der neuen formID
> generieren.
>
> Lösung:
>
> Verwende die gleiche formID für alle Steps.
>
> PS: Das Problem mit der jsPosition ist in der SVN-Version gelöst.
>
> Viele Grüße,
> Reinhard
>
> Am 30.01.2013 11:15, schrieb Reinhard Führicht:
>> Hallo Matthias,
>>
>> entschuldige die späte Antwort.
>>
>> Das Problem mit jsPosition sollte sich schnell lösen lassen. Die Option
>> wird im Code an der falschen Stelle verarbeitet.
>>
>> Ich lege mir mal ein Testformular an und versuche das zu reproduzieren.
>>
>> Ich habe mir hier ein Ticket angelegt, in dem ich meine Erkenntnisse
>> posten werde: http://forge.typo3.org/issues/44959
>>
>> Viele Grüße,
>> Reinhard
>>
>> Am 25.01.2013 20:43, schrieb Matthias Eberlein:
>>> Hallo Reinhard,
>>> erst einmal Vielen Dank für Deine Mühe und Antwort auf mein
>>> Anliegen(problem).
>>>
>>> Nun ich habe jetzt erst einmal auf die neuste svn Revision von Heute
>>> einen Update gemacht und wie du beschrieben den Eintrag im Bugtracker
>>> 44387 angeschaut und diesen patch angewandt.
>>> Jedoch tut sich keine Änderung am Problem. Ich habe für die 2 Steps
>>> jeweils separate ID's vergeben und zwar so:
>>>
>>>     1.formID = online-booking-form-step1
>>>
>>>     2.formID = online-booking-form-step2
>>>
>>> Und das im Globalen Setup bereich.
>>> HTML Template Form
>>>
>>> ###master_multipart-form-start_online-booking-form-step1###
>>> ###master_multipart-form-start_online-booking-form-step2###
>>>
>>> AjaxSubmit habe ich mal auf 0 gesetzt. Nun nach clear chache kann ich
>>> folgendes im source sehen. Trotzt jsPosition = footer wird das Jquery
>>> script in den header geschrieben. Da all meine scripts incl. Jquery im
>>> footer sitzen kann natürlich kein ajax validieren. Wenn ich nun das form
>>> ausfülle (zum test habe ich in jedem step nur ein feld) step-1 schau in
>>> source Jquery für step-1 ist vorhanden. -> next step-2 schaue in source
>>> = jQuery für beide steps vorhanden. Also funktioniert es wie Du schon
>>> sagtest. Nur bei mir nicht, da meine jQuery halt im footer sitzt. Gut,
>>> Aktiviere ich nun ajaxSubmit = 1 und schau in den Source sitzt das
>>> jQuery Validierungs Script wieder schön unten im footer bereich wo ich
>>> es gerne hätte.
>>>
>>> Also Schlussvolgerung ist nun, dass wenn  KEIN AjaxSubmit
>>>          ajaxSubmit = 0
>>>          jsPosition = footer
>>>
>>>
>>> dann greift auch nicht jsPosition = footer Nicht.
>>>
>>> Mit AjaxSubmit
>>>
>>>          ajaxSubmit = 1
>>>          jsPosition = footer
>>>
>>> greift die jsPosition = footer funktion und der 1. Step wird mit ajax
>>> Validiert -> go to next Step geht auch ohne page reload also auch ajax.
>>> Nur vom 2. Step fehlt die Validierungs Jquery.
>>>
>>> Ein Versuch für jeden Step die Ajax einzubinden scheitert mit kein ajax
>>> im source.
>>>
>>> 1.ajax { }
>>> 2.ajax { }
>>>
>>> Wird zwar zu jeden Step zugewiesen (TYPOscript Object Browser) aber im
>>> FE nicht ausgegeben.
>>>
>>> So nun stehe ich auf dem schlauch... Denn wenn ich das so als Multistep
>>> form Verwenden möchte muss ajax submit & Validieren funktionieren.
>>> Ansonsten bleibt mir dann nichts anderes übrig erst einmal nur 1-steps
>>> forms zu verwenden und das halt für 3 versionen in 3 x jQuery Tabs zum
>>> auswählen.
>>>
>>> Gruß
>>> Matthias
>>>
>>>
>>>
>>>
>>>
>>> Am 25.01.2013 08:03, schrieb Reinhard Führicht:
>>>> Hallo Matthias,
>>>>
>>>> es ist möglich Multistep-Formulare per AJAX zu validieren.
>>>> Ich habe das gerade getestet und es funktioniert wunderbar.
>>>>
>>>> Es gibt ein Problem mit ajaxSubmit i nder aktuellen Version im TER.
>>>> Hier
>>>> der Eintrag im Bugtracker: http://forge.typo3.org/issues/44387
>>>>
>>>> Ohne ajaxSubmit funktioniert es aber auf jeden Fall. Möglicherweise
>>>> liegt es an einer fehlenden formID im zweiten Step?
>>>>
>>>> Viele Grüße,
>>>> Reinhard
>>>>
>>>> Am 24.01.2013 19:24, schrieb Matthias Eberlein:
>>>>> Hallo Liste,
>>>>> ich habe mich einmal an der Ext. formhandler herangewagt und versuche
>>>>> ein 2 Step Formular zusammen zustellen. Das ganze Form funktioniert
>>>>> auch
>>>>> wenn man keine Ajax Validierung verwendet. Sobald ich auf ajax
>>>>> umstelle
>>>>> wir nur der erste step min ajax validiert, der 2. bekommt keine ajax
>>>>> validierung. Ein blick im Quellcode, dort fällt auf das nur für den
>>>>> ersten step die jQuery Validierung im Quellcode vorhanden ist nich für
>>>>> den 2. step. Somit kommt auch keine akax validierung für step 2
>>>>> zustande.
>>>>>
>>>>> Die ajax aktivierung  und die finishers habe ich sozusagen global
>>>>> im ts
>>>>> und die preProcessors, validators der 2 steps jeweils separat in
>>>>> 1 {} 2 {}. Habe mir erlaubt einmal die grobe script strucktur hier zu
>>>>> posten. Kann mir jemand sagen wo der fehler dabei ligt oder ist es
>>>>> nicht
>>>>> möglich multistep forms mit ajax zu validieren und zu submit?
>>>>>
>>>>> Für einen Tipp wäre ich euch sehr Dankbar
>>>>> Gruß
>>>>> Matthias Eberlein
>>>>>
>>>>> ps. wenn ich die ajax aktievierung in die einzelenen steps mit
>>>>> aufnehme
>>>>> und nicht global wird ajax nicht aktiviert.
>>>>>
>>>>> plugin.Tx_Formhandler.settings.predef.multiform {
>>>>>
>>>>> name =
>>>>> formID =
>>>>> formValuesPrefix =
>>>>>
>>>>> langFile.1
>>>>> langFile.1.value
>>>>>
>>>>> 1.templateFile
>>>>> 1.templateFile.value
>>>>> 2.templateFile
>>>>> 2.templateFile.value
>>>>>
>>>>> masterTemplateFile
>>>>> masterTemplateFile.value
>>>>>
>>>>> isErrorMarker {
>>>>> }
>>>>> singleErrorTemplate {
>>>>> }
>>>>>
>>>>> finishers {
>>>>> }
>>>>>
>>>>>    ajax {
>>>>>      class = AjaxHandler_JQuery
>>>>>      config {
>>>>>          ajaxSubmit = 1
>>>>>          jsPosition = footer
>>>>>      notOk =
>>>>>      ok =
>>>>>      loading =
>>>>>      autoDisableSubmitButton =
>>>>> 1 {
>>>>>   markers {
>>>>> ...
>>>>> }
>>>>>
>>>>> preProcessors {
>>>>> ...
>>>>> }
>>>>> validators {
>>>>> ...
>>>>> }
>>>>> }
>>>>>
>>>>>
>>>>> 2 {
>>>>> preProcessors {
>>>>> ...
>>>>> }
>>>>> validators {
>>>>> ...
>>>>> }
>>>>>
>>>>> }
>>>>> }
>>>>
>>>>
>>>
>>
>>
>
>



More information about the TYPO3-german mailing list