Clientvalidatoren - JS fehler

Hier finden sich Fragen und Ergänzung zur Dokumentation. // All questions and discussions about the documentation.
Well
Beiträge: 263
Registriert: 25.10.2009, 11:00:19
Wohnort: Beuren
Kontaktdaten:

Clientvalidatoren - JS fehler

Beitrag von Well » 27.07.2010, 22:24:16

Ich verzweifle gerade - mal wieder. :(

Ich möchte gerne die Erweiterung mit den Clientvalidatoren einsetzen, scheiter aber offensichtlich daran. Ich habe nun, denke ich, alles so gemacht wie es in der README beschrieben ist. Das Result ist folgender Javascript Fehler:
JavaScript - http://91.22.41.155/?module=portal&page=register

Uncaught exception: TypeError: '$('form[id=client-val]').addValidator' is not a function
Error thrown at line 1, column 303 in program code:
$('form[id=client-val]').addValidator('do_register', 'username', 'TextLengthValidator', {"minlength":"4","maxlength":"16"}).addValmarkerclasses({});
JavaScript - http://91.22.41.155/?module=portal&page=register

Uncaught exception: TypeError: Cannot convert 'jQuery.APFFormValidator' to object
Error thrown at line 31, column 8 in <anonymous function>():
jQuery.APFFormValidator.addClientValidator('TextLengthValidator',{
called from line 26, column 460 in <anonymous function: ready>():
a.call(s,c);
called via Function.prototype.call() from line 33, column 235 in <anonymous function: L>():
c.ready()
Das Formular sieht so aus:

Code: Alles auswählen

			<html:form name="register" method="post" style="width:100%" id="client-val">
				<form:addtaglib namespace="extensions::form::client::taglib" prefix="form" class="addclientvalidator" />
				<form:addtaglib namespace="extensions::form::client::taglib" prefix="form" class="getclientvalidator" />
				<form:addtaglib namespace="extensions::form::client::taglib" prefix="form" class="clientlistener" />

				<p><b>Benutzername: </b><br><form:text name="username" minlength="4" maxlength="16" /></p>
				<form:addclientvalidator class="TextLengthValidator" button="do_register" control="username" onblur="true" />
				<form:clientlistener control="username">Dieses Feld erwartet mindestens 4 und maximal 16 Buchstaben!</form:clientlistener>
				<br>
				
				<p><b>Passwort: </b><br><form:password name="password" /></p>
				<p><b>Passwort wiederholen: </b><br><form:password name="password2" /></p>
				<br>
				
				<p><b>EMail: </b><br><form:text name="email" /></p>
				<p><b>EMail wiederholen: </b><br><form:text name="email2" /></p>
				
				<form:button name="do_register" value="Registrieren" />
				
				<form:getclientvalidator />
			</html:form>
jQuery 1.4.2 sowie die JS-Datei des Validators werden eingebunden. Was mache ich falsch?

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Clientvalidatoren - JS fehler

Beitrag von Screeze » 27.07.2010, 22:32:55

Gute Frage, kenn ich noch garnicht...

Welcher Browser+version?

Kannst du mal ein live beispiel bis morgen online bringen, damit ich das debuggen kann?

Well
Beiträge: 263
Registriert: 25.10.2009, 11:00:19
Wohnort: Beuren
Kontaktdaten:

Re: Clientvalidatoren - JS fehler

Beitrag von Well » 27.07.2010, 22:53:27


Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Clientvalidatoren - JS fehler

Beitrag von Screeze » 27.07.2010, 23:06:43

Ahh, die FF fehlermeldungen sind aussagekräftiger, u.a.:

Code: Alles auswählen

Fehler: jQuery.APFFormValidator is undefined
Quelldatei: http://uxlin.de/dotnot/?tools_media-action:streamMedia=namespace:extensions_form_client_validator|extension:js|filebody:TextLengthValidator
Zeile: 31
Du hast zwar den textLengthValidator eingebunden, aber da steht mehr in der doku:
Für jeden Validator liegt unter extensions::form::client::validator eine eigene *.js Datei vor. Ausserdem liegt dort die FormValidator.js-Datei, welche Grundvoraussetzung für die Verwendung ist. Um die Einbindung der Dateien muss sich der Entwickler zwar selbst kümmern, jedoch gibt es bereits praktische Extensions, welche die meiste Arbeit abnehmen. Eine komplette Beschreibung dieser ist hier nicht passend, deshalb nur einen kurzen Überblick, auf den jeweiligen Dokumentationsseiten ist die ausführliche Beschreibung.
es fehlt einfach die FormValidator.js in der das APFFormValidator Objekt liegt.

Well
Beiträge: 263
Registriert: 25.10.2009, 11:00:19
Wohnort: Beuren
Kontaktdaten:

Re: Clientvalidatoren - JS fehler

Beitrag von Well » 27.07.2010, 23:26:03

Oh, dann habe ich den Satz wohl überlesen. :oops:

Dankeschön.

Well
Beiträge: 263
Registriert: 25.10.2009, 11:00:19
Wohnort: Beuren
Kontaktdaten:

Re: Clientvalidatoren - JS fehler

Beitrag von Well » 28.07.2010, 16:45:48

Hey, noch eine Frage:

Für die clientlistener gibt es ja, wie ich das gesehen habe, das Attribut "validator" nicht, wodurch mehrere clientlistener für ein Feld mit mehreren Validatoren nicht möglich ist?! (Oder gibt es noch andere Möglichkeiten?)

Wäre es möglich, dieses Attribut noch einzubauen?

Zudem noch folgendes:

Formular ->

Code: Alles auswählen

			<html:form name="register" method="post" style="width:100%" id="client-val">
				<form:addtaglib namespace="extensions::form::client::taglib" prefix="form" class="addclientvalidator" />
				<form:addtaglib namespace="extensions::form::client::taglib" prefix="form" class="getclientvalidator" />
				<form:addtaglib namespace="extensions::form::client::taglib" prefix="form" class="clientlistener" />
				<form:addtaglib namespace="extensions::form::client::taglib" prefix="form" class="clienterror" />
				
				<!-- clientvalidatore -->
				<form:addclientvalidator class="TextLengthValidator" button="do_register" control="username|password" onblur="true" />
				<form:addclientvalidator class="EMailValidator" button="do_register" control="email" onblur="true" />

				<form:clienterror>error</form:clienterror>
				
				<p><b>Benutzername: </b><br><form:text name="username" minlength="4" maxlength="16" /></p>
				<form:clientlistener control="username">			
					<div class="ui-state-error ui-corner-all" style="padding: 0 .7em;"> 
						<p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span> 
						<strong>Fehler: </strong>Mindestens 4 und maximal 16 Zeichen.</p>
					</div>
				</form:clientlistener>
				<br>
				
				<p><b>Passwort: </b><br><form:password name="password" /></p>
				<form:clientlistener control="password">			
					<div class="ui-state-error ui-corner-all" style="padding: 0 .7em;"> 
						<p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span> 
						<strong>Fehler: </strong>Mindestens 4 und maximal 16 Zeichen.</p>
					</div>
				</form:clientlistener>					
				<br>
				
				<p><b>Passwort wiederholen: </b><br><form:password name="password2" ref="password" /></p>
				<br>
				
				<p><b>E-Mail-Adresse: </b><br><form:text name="email" ref="email2" /></p>
				<form:clientlistener control="email">
					<div class="ui-state-error ui-corner-all" style="padding: 0 .7em;"> 
						<p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span> 
						<strong>Fehler: </strong>Die E-Mail-Adresse ist nicht g&uuml;ltig.</p>
					</div>				
				</form:clientlistener>
				<br>
				
				<p><b>E-Mail-Adresse wiederholen: </b><br><form:text name="email2" /></p>
				
				<form:button name="do_register" value="Registrieren" />
				
				<form:getclientvalidator />
			</html:form>
Wenn die beiden E-Mail-Felder unterschiedliche Werte haben und ich auf den submit-Button klicke, wird das Formular nicht abgesendet und der Text im <form:clienterror>-Tag erscheint. Ich habe aber den FieldCompareValidator nicht hinzugefügt und erst recht nicht auf die Felder "angewendet". Es reicht offenbar das ref-Attribut - Ist das Verhalten so beabsichtigt?

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Clientvalidatoren - JS fehler

Beitrag von Screeze » 28.07.2010, 18:51:00

Eigentlich sollte das auch nicht der Fall sein... ich hab hier grad kein editor und serverzugang kannst du das mal live stellen dass ich das ansehen kann?

Well
Beiträge: 263
Registriert: 25.10.2009, 11:00:19
Wohnort: Beuren
Kontaktdaten:

Re: Clientvalidatoren - JS fehler

Beitrag von Well » 29.07.2010, 18:44:27


Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Clientvalidatoren - JS fehler

Beitrag von Screeze » 29.07.2010, 18:49:23

Kannst du das ref attribut mal setzen, das scheint nicht drin zu sein ;)

Well
Beiträge: 263
Registriert: 25.10.2009, 11:00:19
Wohnort: Beuren
Kontaktdaten:

Re: Clientvalidatoren - JS fehler

Beitrag von Well » 29.07.2010, 19:40:05

Höh?

Das password Feld hat das ref-Attribut auf password2, email auf email2. Hm, aber lol, wenn die Passwörter unterschiedlich sind kann ich das Formular trotzdem absenden, bei unterschliedlichen E-Mail-Adressen nicht. Dann liegt der Fehler wohl doch wo anders - Aber wo?

Die gesamte Seite: http://pastebin.revalc.de/dotnot/view.php?id=239

Ich komm echt nicht drauf...

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Clientvalidatoren - JS fehler

Beitrag von Screeze » 29.07.2010, 19:49:37

Also der quelltext auf http://uxlin.de/dotnot/?module=portal&page=register
entspricht nicht dem den du gepostet hat, denn dort sind die ref felder nicht definiert, und es klappt wir gewünscht ;)

Well
Beiträge: 263
Registriert: 25.10.2009, 11:00:19
Wohnort: Beuren
Kontaktdaten:

Re: Clientvalidatoren - JS fehler

Beitrag von Well » 29.07.2010, 20:10:45

Hm... Also doch, es ist der gleiche Code.

http://uxlin.de/dotnot/apps/dotnot/pres ... ister.html

Wenn ich mir davon den Quelltext ansehe, sind auch dort die ref-Attribute vorhanden. Die online gestellte Demoseite funktioniert bei dir? Ich kann, wenn ich in die beiden EMailfelder etwas unterschiedliche eintrage, wie bereits gesagt, das Formular nicht absenden sondern es erscheint "error", der Text im clienterror-Tag.

Reden wir gerade aneinander vorbei? :/

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Clientvalidatoren - JS fehler

Beitrag von Screeze » 29.07.2010, 20:50:03

Was du meinst versteh ich schon, und auf der templateseite seh ich das ref attribut auch, aber wenn ich die seite
http://uxlin.de/dotnot/?module=portal&page=register
aufrufe, ist weder in firebug noch im quelltext ein ref attribut zu finden...

welchen browser nutzt du denn?

Auch im IE ist der quelltext ohne ref attribut. (zudem sieht dort die seite mehr als merkwürdig aus ;) )

Code: Alles auswählen

				
				<p><b>Passwort: </b><br><input type="password" name="password" /></p>
				<div id="apf-listener-password" class="apf-form-clientlistener">			
					<div class="ui-state-error ui-corner-all" style="padding: 0 .7em;"> 
						<p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span> 
						<strong>Fehler: </strong>Mindestens 4 und maximal 16 Zeichen.</p>
					</div>
				</div><script type="text/javascript">$(document).ready(function(){$("#client-val :input[name='password']").bind("ValidationNotify",function(event, param){jQuery.APFFormValidator.handleClientListenerEvent($("#apf-listener-password"),param);});});</script>					
				<br>
				
				<p><b>Passwort wiederholen: </b><br><input type="password" name="password2" /></p>

				<br>
				
				<p><b>E-Mail-Adresse: </b><br><input type="text" name="email" /></p>
				<div id="apf-listener-email" class="apf-form-clientlistener">
					<div class="ui-state-error ui-corner-all" style="padding: 0 .7em;"> 
						<p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span> 
						<strong>Fehler: </strong>Die E-Mail-Adresse ist nicht g&uuml;ltig.</p>
					</div>				
				</div><script type="text/javascript">$(document).ready(function(){$("#client-val :input[name='email']").bind("ValidationNotify",function(event, param){jQuery.APFFormValidator.handleClientListenerEvent($("#apf-listener-email"),param);});});</script>

				<br>
				
				<p><b>E-Mail-Adresse wiederholen: </b><br><input type="text" name="email2" /></p>


Well
Beiträge: 263
Registriert: 25.10.2009, 11:00:19
Wohnort: Beuren
Kontaktdaten:

Re: Clientvalidatoren - JS fehler

Beitrag von Well » 29.07.2010, 21:00:15

Okay, das meintest du. Stimmt, da ist es natürlich auch bei mir nicht mehr vorhanden. Aber das muss es doch auch nicht?! (Zudem, für den input-Tag gibt es auch kein Attribut mit diesem Namen?!)

Es geht ja darum, dass ich, sobald ich das ref-Attribut im form:text-Tag setze, ich das Formular bei aktiviertem JS nicht mehr absenden kann und der form:clienterror-Tag anspringt...

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Clientvalidatoren - JS fehler

Beitrag von Screeze » 29.07.2010, 22:40:37

ach so meintest du das... äähm ich schau mir morgen nochmal den quelltext dazu an, sry stand vorhin auf dem Schlauch :oops: :oops:

edit: hab nochmal schnell nen test gemacht, mit FF klappt das problemlos.
Ich vermute bei dir springt der Email validator an, gibst du evtl. in eins der Felder keine valide email an?

Wenn ich in das 1.
asd@asd.de
und in das 2.
dsa@dsa.de
eingebe, komm ich durch, geb ich aber in eines KEINE valide email ein, komm ich klar nicht durch, weil der EmailValidator blockiert.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast