Hans Gustav: Sonderzeichen

Hallo,

ich hab ein script geschrieben das die eingabe von sonderzeichen überprüft.

------------------------------------------

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<script type="text/javascript">
<!--
function chk ()
{
 var val = document.f.name.value;
 var wert = val.length;
 var wertt = wert-1;
 var last = val.substring(wertt,wert);

sz = new Array("ö","ä","ü","Ö","Ä","Ü","_"," ","!","§","$","%","&","/","(",")","=","ß","?","","*","~","+","²","³","'","#");
 var szl = sz.length;

for (var i=0; i <= szl; i++)
 {
  if (last == sz[i])
  {
   valb = val.substring(0,wertt);
   document.f.name.value = valb;
   alert("Sie sollen doch keine " + last + "´s oder ander Sonderzeichen verwenden!");
  }
 }
}

//-->
</script>
<TITLE> Sonderzeichen Check </TITLE>
</HEAD>
<BODY>
<FORM METHOD="POST" ACTION="none" NAME="f">
<INPUT TYPE="text" NAME="name" OnKeyDown="chk()" OnKeyUp="chk()">
</FORM>
</BODY>
</HTML>

--------------------------------------

aber wieso geht das nur mit ä ö ü Ä Ö Ü _  ?

Hans Gustav

  1. function chk ()
    {
    var val = document.f.name.value;
    var wert = val.length;
    var wertt = wert-1;
    var last = val.substring(wertt,wert);

    sz = new Array("ö","ä","ü","Ö","Ä","Ü","_"," ","!","§","$","%","&","/","(",")","=","ß","?","","*","~","+","²","³","'","#");
    var szl = sz.length;

    for (var i=0; i <= szl; i++)
    {
      if (last == sz[i])
      {
       valb = val.substring(0,wertt);
       document.f.name.value = valb;
       alert("Sie sollen doch keine " + last + "´s oder ander Sonderzeichen verwenden!");

    Nur nebenbei: Der Plural wird hierzulande immer noch ohne Apostroph geschrieben.

    }
    }
    }

    <INPUT TYPE="text" NAME="name" OnKeyDown="chk()" OnKeyUp="chk()">

    aber wieso geht das nur mit ä ö ü Ä Ö Ü _  ?

    Das Skript oben funktioniert so überhaupt nicht, weil Du in Deiner Zeichenliste den Rückstrich nicht maskiert hast. Es muß "\" lauten, nicht "".

    Wird der Fehler beseitigt, funktioniert das Skript zwar, aber unerwünschte Zeichen kann man trotzdem mit Ausnahme des Textendes überall eingeben. Und selbstredend kann man diese Zeichen auch eintippen, indem man Javascript einfach ausschaltet.

    Ich würde Dir deshalb empfehlen, den ganzen Firlefanz oben zu löschen und stattdessen serverseitig zu prüfen. Willst Du unbedingt eine clientseitige Prüfung, solltest Du a) match() verwenden und b) erst mit onsubmit die Prüfung starten, um den Benutzer nicht zu Tode zu nerven. Möglicherweise wäre es auch ratsam, auf die Zeichen zu prüfen, die Du tatsächlich haben willst anstatt nur eine Handvoll Zeichen auszuschließen.

    Die komplette Prüfung könnte in etwa so aussehen:

    if (document.f.name.value.match(/[^a-z0-9.]/i))
         alert("Bitte nur die Buchstaben a-z, A-Z, die Zahlen 0-9 sowie den Punkt verwenden.");

    Gruß,
      soenk.e