Zum Inhalt springen

Powermail und jQuery nebeneinader möglich?

Erstellt am 2. März 2010 · 6 Antworten · letzte Antwort am 27. August 2010

Tags: Powermail, JavaScript & AJAX, Frage

flanders ·

Hallo Forum,

ich habe eine Internetseite die ein paar Spielereien, mittels jQuery, beinhaltet.
Wenn ich nun ein Powermail-Formular einbaue, wird keine Validierung (vom Email-Feld) vorgenommen. Ich habe herrausgefunden, dass es mit jQuery zu tun hat. Denn wenn ich die jQuery-Library rausnehme, funktioniert die Validierung von Powermail wunderbar!

So wird gar nicht validiert, und es kommt zu JS-Fehlern.

<script src="typo3conf/ext/powermail/js/mandatoryjs/lib/prototype.js" type="text/javascript"></script>
<script src="typo3conf/ext/powermail/js/mandatoryjs/src/effects.js" type="text/javascript"></script>
<script src="typo3conf/ext/powermail/js/mandatoryjs/fabtabulous.js" type="text/javascript"></script>
<script src="typo3conf/ext/powermail/js/checkbox/checkbox.js" type="text/javascript"></script>
<script src="typo3temp/javascript_93077bb238.js" type="text/javascript"></script>

<link rel="shortcut icon" href="/fileadmin/favicon.ico" />
<link rel="stylesheet" type="text/css" href="/fileadmin/css/global.css" />
<script type="text/javascript" src="/fileadmin/js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="/fileadmin/js/jquery.tools.min.js"></script>
<script type="text/javascript" src="/fileadmin/js/scripts.js"></script>

    <!--[if lte IE 6]>
    <script type="text/javascript" src="/js/unitpngfix.js"></script>
    <link rel="stylesheet" type="text/css" href="/css/ie6.css" />
    <![endif]-->

<script src="8.3131.html" type="text/javascript"></script>
<script type="text/javascript" src="t3lib/jsfunc.validateform.js"></script>

Fehler im Firebug:

Error: element.attachEvent is not a function
Source File: http://xxxxx/typo3conf/ext/powermail/js/mandatoryjs/lib/prototype.js
Line: 4017

Error: element.dispatchEvent is not a function
Source File: http://xxxxx/typo3conf/ext/powermail/js/mandatoryjs/lib/prototype.js
Line: 4072

Error: this.element.getElementsByTagName is not a function
Source File: http://xxxxx/typo3conf/ext/powermail/js/mandatoryjs/fabtabulous.js
Line: 16

Gibt es eine Möglichkeit, dass beide Frameworks (jQuery und Prototype) nebeneinader existieren können?

flanders ·

Hallo Alex,

ne diesen Link kannte ich noch nicht. Ich habe die Änderungen per Hand vollzogen.
Es tauchen auch nun keine Fehler mehr im Firebug auf. Aber trotzdem wird das Email-Feld nicht validiert. Das Feld Email ist auch im Backend richtig eingestellt. Das Formular wird einfach verschickt.

Hier nochmal der Header:

<script src="typo3conf/ext/powermail/js/jquery/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="typo3conf/ext/powermail/js/jquery/tx_powermail.js" type="text/javascript"></script>
<script src="typo3conf/ext/powermail/js/checkbox/checkbox.js" type="text/javascript"></script>
<script src="typo3temp/javascript_93077bb238.js" type="text/javascript"></script>


<link rel="shortcut icon" href="/fileadmin/favicon.ico" />
<link rel="stylesheet" type="text/css" href="/fileadmin/css/global.css" />
<script type="text/javascript" src="/fileadmin/js/jquery-1.3.2.min.js"></script>

<script type="text/javascript" src="/fileadmin/js/jquery.tools.min.js"></script>
<script type="text/javascript" src="/fileadmin/js/scripts.js"></script>
<script src="8.3131.html" type="text/javascript"></script>
<script type="text/javascript" src="t3lib/jsfunc.validateform.js"></script>

Ich weiß, dass jquery-1.3.2.min.js 2x drin ist. Aber auch wenn es nur 1x drin ist, funktioniert die Validierung nicht. Es ist 2x drin, da Powermail sein JS-Code nur in die betreffende Seite einbindt. Ich benötige mein jQuery aber auf alle Seiten. Darum ist es auf der Formular-Seite 2x vorhanden.

Ich habe den Eindruck, dass der JS-Code im HTML nicht richtig durch die class.tx_powermail_form.php ausgegeben wird. Ich habe mal class.tx_powermail_form.php ein alert("asdf"); reingeschrieben.

	// Add Javascript after form output for mandatory check
	function AddMandatoryJS() {
		if($this->conf['libraryToUse'] == 'jquery'){
		$js = '
			<script type="text/javascript">
				function formCallback(result, form) {
					window.status = "valiation callback for form " + form.id + ": result = " + result;
					alert("asdf");
				}
				var valid = new Validation("#'.$this->OuterMarkerArray['###POWERMAIL_NAME###'].'", {immediate : true, onFormValidate : formCallback, focusOnError: true});
				
			</script>
		';
	}else{		
		$js = '
			<script type="text/javascript">
			
			
				function formCallback(result, form) {
					window.status = "valiation callback for form \'" + form.id + "\': result = " + result;
					alert("asdf");
				}
				var valid = new Validation(\'' . $this->OuterMarkerArray['###POWERMAIL_NAME###'] . '\', {immediate : true, onFormValidate : formCallback});
			</script>
		';
	}
		return $js;
	}

Das wird auch nach Cache leeren nicht ausgegeben. Es wird immer das selbe ausgegeben 🙁

<script type="text/javascript">
	function formCallback(result, form) {
		window.status = "valiation callback for form '" + form.id + "': result = " + result;
	}
	var valid = new Validation('kontaktaufimpressum', {immediate : true, onFormValidate : formCallback});
</script>

Liegt das vielleicht daran?

TheFreeman ·

Hat denn jemand von Euch eine gepatchte Powermail 1.5.3 und könnte mir die bitte zum Download irgendwo hinlegen oder per Mail schicken? 8-)

Wäre echt sehr lieb, denn ich kann die .patch nicht ausführen.

einpraegsam.​net ·
TheFreeman schrieb

Hat denn jemand von Euch eine gepatchte Powermail 1.5.3 und könnte mir die bitte zum Download irgendwo hinlegen oder per Mail schicken? 8-)

Wäre echt sehr lieb, denn ich kann die .patch nicht ausführen.

Ich habe ein Arbeitsversion, die ich dir zur Verfügung stellen kann. Diese unterstützt nur noch jQuery (mit t3jquery im noConflictMode). Bei Interesse bitte E-Mail.

TheFreeman ·

Ich habe nun die gepatchte 1.5.3 auf meinem 4.4.2 laufen.
Die für jQeury nötigen Scripts werden von powermail ordnungsgemäß eingebunden:

<script src="fileadmin/sys_scripts/jquery/jquery-1.4.2.min.js?1282225634" type="text/javascript"></script>
<script src="typo3conf/ext/powermail/js/jquery/tx_powermail.js?1282899687" type="text/javascript"></script>
<script src="typo3conf/ext/powermail/js/misc/misc.js?1282899687" type="text/javascript"></script>

Aber die JS-Prüfung funktioniert trotzdem nicht.
An was kann das liegen?

Sonst sind keine anderen Scripts eingebunden und
auch KEINE anderen Frameworks. #angry#