WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik


Homepage und Webhosting-Forum

HTML, XHTML, CSS , style, XML, Javascript und mehr, Fragen, Tipps und Anregungen zu diesen Basic Techniken - hier rein !


Forum » HTML, CSS - Hilfe für das Erstellen einer Homepage » Javascript: Im Inputfeld nur bestimmte Zeichen erlauben. » Antworten
Benutzername:
Passwort: Passwort vergessen?
Inhalt der Nachricht: Fett | Kursiv | Unterstrichen | Link | Bild | Smiley | Zitat | Zentriert | Quellcode| Kleiner Text
Optionen: Emailbenachrichtigung bei Antworten
 

Die letzten 5 Postings in diesem Thema » Alle anzeigen
von lyfwcn
Fatal error: Uncaught Error:
von Diskus
Hallo Ori.
Ich muss hier leider noch mal nachfragen.
Habe deine Funktion erfolgreich im IE benutzt.
Leider funktioniert sie nicht im Firefox (FF).

else if (e)
keycode = e.which;

Dies sollte doch (so denke ich) extra für FF sein.
Funktioniert bei FF aber leider nicht.
Javascript ist aktiviert.
Ich kann aber im entsprechendem Textfeld gar keine eingaben machen.
Woran kann das liegen?
Vielen Dank im Voraus.
Gruß
Diskus
von Elharter
aufpassen, es gibt bei jedem die client die möglichkeit javascript auzuschalten !! dH du solltest das auch dann serverseitig überprüfen !
von Ori
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).
von Bastian_W
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?

Nach oben