Registrierungsformular Validierung

Hallo, ich möchte zwei felder bei der Eingabe auf Zahlen prüfen.
Bei mir kommt es vor das die User keine Nummern eingeben.

Ich habe in dem Oxvalidate keine methode für die Prüfung auf Zahlen gefunden.

kommt vor.
wir haben Kunden, die Land in das Ortsfeld eintragen oder mit dem Vornamen “Packstation” heißen.

bei dem vorliegenden Informationsgehalt kann man dir leider nicht helfen. welche Shop Version ist im Einsatz? Was soll passieren wenn der Kunde keine Nummer eingibt? Darf das Feld nur Zahlen enthalten? Oder auch Sonderzeichen? Buchstaben? Leerzeichen? Muss der Kunde zum eingeben aufgefordert werden? Darf das Feld leer sein?

Gesendet von meinem GT-N7100

Ja so iss es.

Ich habe die Version OXID 4.6 und versuche die Validierung aufzubohren.

Ich möchte das PLZ und Telefonnummer beim Registrierungsvormular auf Zahlen geprüft wird.

Leider hab ich nichts dazu gefunden.

Danke für deine Antwort…

moin,

so siehts aus:
/out/azure/tpl/form/fieldset/user_billing.tpl enthält die erwähnten Felder:
<input name=“invadr[oxuser__oxzip]” > in der Zeile 82
<input name=“invadr[oxuser__oxfon]” > in der Zeile 139

die Validierung bei OXID funktioniert über die Klassen, beide inputs haben class=“js-oxValidate js-oxValidate_notEmpty”,
jx-oxValdiate bedeutet, dass dieses Feld validiert werden muss
oxValidate_notEmpty heißt, dass es nicht leer sein darf.

/out/azure/src/js/widgets/oxinputvalidator.js enthält die Logik für die Validierung.
Da hängen wir mal zwei eigene Methoden und die jeweiligen Fehlermeldungen dran:
Zeile 40


...
metodValidateDate          : "js-oxValidate_date",[b]
metodValidateZip           : "js-oxValidate_zip",
metodValidateFon           : "js-oxValidate_fon",
errorMessageBadZip         : "js-oxError_badzip",
errorMessageBadFon         : "js-oxError_badfon",[/b]
...

(aufpassen, da steht wirklich “metod” und nicht “method”)

dann weiter unten zwischen den Zeilen 107 und 110 quetschen wir die Validierungslogik rein:


      }
   }
[b]
   if ( $( oInput ).hasClass( oOptions.metodValidateZip ) && blValidInput ) {
      // prüfen ob andere Zeichen als Nummern vorhanden sind
      var pattern = new RegExp(/^\d*$/); 
      if( !pattern.test( $(oInput).val()) ) { 
         return oOptions.errorMessageBadZip;  // Fehlermeldung ausgeben
      }
   }

   if ( $( oInput ).hasClass( oOptions.metodValidateFon ) && blValidInput ) {
      // hier die Bedingungen für die Telefon-Validierung
      if( !$bedingung ) {
         return errorMessageBadFon; // Fehlermeldung ausgeben
      }
   }
[/b]
   if ( $( oInput ).hasClass( oOptions.metodValidateLength ) && blValidInput ) {

bei der PLZ prüfe ich mit RegExp ob nur Nummern vorhanden sind, wenn nicht wird die Fehlermeldung angezeigt.

Zurück in die /out/azure/tpl/form/fieldset/user_billing.tpl,
nach dem Feld für die PLZ fügen wir die Fehlermeldung ein (Zeile 85 rum):


<p class="oxValidateError">
   <span class="js-oxError_notEmpty">[{ oxmultilang ident="EXCEPTION_INPUT_NOTALLFIELDS" }]</span>
   [b]<span class="js-oxError_badzip">Die PLZ enthält unzulässige Zeichen!</span>[/b]
   [{include file="message/inputvalidation.tpl" aErrors=$aErrors.oxuser__oxzip}]
</p>

nach dem Feld für die Telefonnummer fügen wir die zweite Fehlermeldung ein (Zeile 145 rum):


<p class="oxValidateError">
   <span class="js-oxError_notEmpty">[{ oxmultilang ident="EXCEPTION_INPUT_NOTALLFIELDS" }]</span>
   [b]<span class="js-oxError_badfon">Die Telefonnummer ist auch irgendwie falsch.</span>[/b]
   [{include file="message/inputvalidation.tpl" aErrors=$aErrors.oxuser__oxfon}]
</p>

alles speichern, tmp leeren, neuladen.

viele Grüße