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? |
|