Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » Auszeichnungssprachen » Javascript: Im Inputfeld nur bestimmte Zeichen erla... Antworten
Javascript: Im Inputfeld nur bestimmte Zeichen erlauben.

Bastian_W
Otto-Normal-Poster


Beiträge: 85


Hallo zusammen,

ich brauche mal eure Hilfe. Ich möchte in einem Inputfeld nur bestimmte Zeichen (Zahlen plus den punkt) erlauben.

Sowas wie hier in der Art:
http://www.yubb.de/artikel310.html

Allerdings klappt das Beispiel dort nicht. Und der Punkt muss ja auch erlaubt werden. Da ich kein Crack in JavaScript bin hoffe ich auch eure Hilfe :-/...


---
Bastian_W
------
Real programmers don't comment their code. It was hard to write, so it should be hard to read.

  Profil   Editieren   Zitieren

Bastian_W
Otto-Normal-Poster


Beiträge: 85


So, ich bin nun etwas weiter... Das ganze sieht nun so aus:

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18:
<script type="text/javascript">
<!--
function KeyCheck(myfield,e)
  {
  var keycode;
  if (window.event) keycode = window.event.keyCode;
  else if (e) keycode = e.which;
  else return true;
  if ((keycode==190) || (keycode==8) || (keycode==48)  || (keycode==49)  || (keycode==50)  || (keycode==51)  || (keycode==52)   || (keycode==53)  || (keycode==54)  || (keycode==55)  || (keycode==56)  || (keycode==57)  || (keycode==58))
    {
    return true;
    }
  else return false;
  }
//-->
</script>



und wird aufgerufen mittels:

1:
 onKeyPress="return KeyCheck(this,event)"



Das ganze klappt für Zahlen auch Super... auch für den backspace. NUR nicht für den Punkt (keycode 190).

Jemand eine Idee wieso nicht?

---
Bastian_W
------
Real programmers don't comment their code. It was hard to write, so it should be hard to read.

  Profil   Editieren   Zitieren

Ori
Fachidiot


Beiträge: 115


Der Punkt hat den ASCII-Code 46...

Sinnvollerweise sollten auch diverse Steuertasten (0) wie Entfernen, Tab und die Pfeiltasten sowie Eingabe (13 bzw. 10) zugelassen werden, das sieht dann etwa so aus:
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27:
function kc(e)
{
	var keycode;

	if (window.event)
		keycode = window.event.keyCode;

	else if (e)
		keycode = e.which;

	else
		return true;

	// Zahlen
	if (47 < keycode && keycode < 58)
		return true;

	// Steuerzeichen
	var kcok = new Array(8, 10, 13, 46, 0);
	while (kcok.length > 0)
	{
		if (keycode == kcok.pop())
			return true;
	}

	return false;
}


Ich habe den Namen der Funktion gekürzt (wieder ein paar Bytes gespart.. Kleinschreibung verringert außerdem die Fehlerquote) und das Skript anständig ausgerichtet. Die Zahlen werden jetzt analog zu Deinem ersten Link geprüft, die Steuerzeichen (falls sich an der Liste etwas ändert - einfach anpassen) über eine Schleife. pop() holt sich immer das letzte Element aus dem Array und löscht dieses (verhält sich also wie ein Stack).
Die 0 steht absichtlich am Ende im Array, da sie von den Steuerzeichen am häufigsten verwendet wird und die Ausführung daher schneller beendet wird.

Das Letzte else ist überflüssig, da alle anderen Fälle die Funktion schon beendet hätten (return true).

  Profil   E-Mail   Website   Editieren   Zitieren

Elharter
Feiertags-Poster


Beiträge: 26


aufpassen, es gibt bei jedem die client die möglichkeit javascript auzuschalten !! dH du solltest das auch dann serverseitig überprüfen !

  Profil   Editieren   Zitieren
 

Antworten
Nach oben