Seite 1 von 1

[Gelöst] Feld auf mehrere Werte prüfen

Verfasst: 22. September 2010 16:33
von peda
Hallo Forum,

folgendes ist an mich herangetragen worden:
Wir haben ein benutzerdefiniertes Attribut, das den Akadem. Titel eines Kontaktes beinhaltet. Und die Person, die das Feld anno dazumal angelegt hat, dachte nicht mit, und nun ist es ein Textfeld statt einer Dropdownbox.
Nachdem ja jeder die Titel anders schreibt, mal abgekürzt, mal ausgeschrieben... die Kollegen aus den CEE Staaten wieder eigene Bezeichnungen und eigene Schreibweisen benutzen, ist halt nix einheitlich. Um den Wildwuchs einzudämmen, möchte ich bei verlassen des Feldes eine Prüfung anschubsen, die z.B. auf folgendes Prüft:

Prof.
Prof. Mag.
Prof. MMag.
Prof. Mag. Dr.
Prof. MMag. Dr.
Prof. Mag. DDr.
Prof. MMag. DDr.

Wenn der eingegebene Wert dem nicht entspricht, dann soll ein Alert erscheinen, in dem die möglichen Ausprägungen ersichtlich sind.

Meine Scriptkenntnisse sind nicht soo toll :-( - ich bekomme nur eine Prüfung auf einen bestimmten Wert hin. Wie kann ich auf ein ganzes Set von möglichen Werten prüfen?

Währe toll, wenn mir da auf den richtigen Weg geholfen würde ;-)

Danke schon mal vorab!

lg

Peter

Re: Feld auf mehrere Werte prüfen

Verfasst: 22. September 2010 16:38
von Michael Sulz
Hallo Peter,

in diesem Fall lautet das Zauberwort Regular Expressions. Mit diesen kannst du deine Anforderung sehr gut umsetzen.
Siehe z.B.:
viewtopic.php?f=56&t=9562&p=47066&hilit=expression#p47066
http://www.mohamedibrahim.net/blog/2010 ... -40-field/

Re: Feld auf mehrere Werte prüfen

Verfasst: 22. September 2010 16:52
von peda
Servus Michael,

Danke für die superschnelle Rückmeldung!

Mein erster Gedanke ging auch in diese Richtung, denn bei den Telefonnummern haben wir das auch mit RegExp für das Kanonische Format realisiert. Hier ging es leichter, da an bestimmter Stelle Leerzeichen oder die Klammern erwartet werden.

Wenn aber erwünscht ist, dass in dem Feld "Prof. MMag. Dr." stehen soll, kann der User immerhin noch "Prof. Mmag. Dr." eingeben.
Ich dachte da eher an ein Array, aber damit habe ich bisher noch nix am Hut gehabt.
Auf meiner Suche habe ich bisher nur so Sachen gefunden, wie das füllen von Arrays von div. Feldern im Formular... Ich möchte "nur" ein Feld mit bestimmten Werten vergleichen.

Re: Feld auf mehrere Werte prüfen

Verfasst: 23. September 2010 11:19
von peda
Hallo,

ich hab einen Weg gefunden, der das macht, was ich möchte:

Code:
if(crmForm.all.custom_titel.DataValue != null)
{
Array.prototype.exists = function(o) {
for(var i = 0; i < this.length; i++)
   if(this[i] === o)
     return true;
return false;
}

var Titel = ["Prof.","Prof. Mag.","Prof. MMag.","Prof. Mag. Dr.","Prof. MMag. Dr.","Prof. Mag. DDr.","Prof. MMag. DDr.","Prof. Dr.","Prof. DDr.","Mag.","MMag.","Mag. Dr.","MMag. Dr.","Mag. DDr.","MMag. DDr.","Dr.","DDr.","Mgr.","Ing."];

o=crmForm.all.custom_titel.DataValue ;
if(Titel.exists(o)!=true)
{
alert("Es dürfen nur folgende Titel eingegeben werden:\n\n Prof.\n Prof. Mag.\n Prof. MMag.\n Prof. Mag. Dr.\n Prof. MMag. Dr.\n Prof. Mag. DDr.\n Prof. MMag. DDr.\n Prof. Dr.\n Prof. DDr.\n Mag.\n MMag.\n Mag. Dr.\n MMag. Dr.\n Mag. DDr.\n MMag. DDr.\n Dr.\n DDr.\n Mgr.\n Ing.");
}
   
var oField = crmForm.all.customq_titel;
oField.onblur = function() { oField.SetFocus(); oField.onblur = null; }
oField.SetFocus();
}


Dies ist im OnChange des Attributes eingetragen.

Vielleicht hilft das dem einen oder anderem ;-)

Peter