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

22. September 2010 16:33

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
Zuletzt geändert von peda am 23. September 2010 11:19, insgesamt 1-mal geändert.

Re: Feld auf mehrere Werte prüfen

22. September 2010 16:38

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

22. September 2010 16:52

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

23. September 2010 11:19

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