Eingabefeld prüfen tut mit IE aber nicht mit Netscape 4.79
Christian
- javascript
Hallo!
Ich habe folgendes Problem. Das Script soll ein Eingabefeld auf verbotene Zeichen prüfen. Falls eines eingegeben wird, soll es gelöscht werden und eine Meldung erscheinen.
Das bisherige Funktion:
var forbidcnt=0;
function forbid(o, re) {
rx = new RegExp(re, 'gi');
chk = o.value.match(rx);
if(chk && chk.length) {
if(!o.id) { o.id='tmp'+forbidcnt; forbidcnt++; }
o.value = o.value.replace(rx, '');
alert("Nur Zahlen und Punkte als Eingabe erlaubt!");
}
}
Also mit dem IE klappt das einwandfrei. Aber mit Netscape 4.79 läuft er nur bis if(chk && chk.length) und ignoriert den Rest.
Kann mir jemand Helfen?
Danke im voraus.
Christian
Hallo Christian,
function forbid(o, re) {
rx = new RegExp(re, 'gi');
chk = o.value.match(rx);
if(chk && chk.length) {
wie sieht "o" aus?
Gruß, Jürgen
PS: Für mich ist "Berücksichtigen des Netscape 4.xx" etwa so wie "Verkaufen von verbleitem Normalbenzin" oder "Berücksichtigen von 486 unter DOS".
Hallo JürgenB!
Ich weiss dass der Netscape 4.79 ne olle Krampe ist, aber unser Unix-Admin sagt zum Update: "Geht nicht weil is nich". Also muss ich damit klar kommen.
Der Aufruf erfolgt aus einem Eingabefeld.
<input type=text name=feld onkeyup="javascript:forbid(this,'[^0-9...-]')">
Desweiteren habe ich herausgefunden, dass er in this.value nicht den eingegebenen Wert übergibt, sondern den der vorher schon drinstand.
Bsp.: Wenn schon 12345a im Feld steht, das Feld dann den den Focus verliert, dann ihn wiederbekommt und ich dann ein onkeyup-Event auslöse, tuts. Direkt bei Eingabe geht nix.
Aber mal danke fürs posten!
Hallo,
Bsp.: Wenn schon 12345a im Feld steht, das Feld dann den den Focus verliert, dann ihn wiederbekommt und ich dann ein onkeyup-Event auslöse, tuts. Direkt bei Eingabe geht nix.
Eingabe bzw. Änderung ist vielleicht per onChange o.ä. erkennbar;
hast du mal testfähigen Code oder URI dazu?
Grüsse
Cyx23
Hallo Cyx23!
Hier ein Stück Code zum Testen:
<HTML>
<HEAD>
<TITLE>XXX</TITLE>
<META http-equiv=Content-Type content=text/html;CHARSET=iso-8859-1>
<script type="text/javascript" language="JavaScript">
/*Funktion zur Prüfung von jedem ein ein Feld eingegebenen Zeichens*/
var forbidcnt=0;
function forbid(o, re) {
rx = new RegExp(re, 'gi');
chk = o.value.match(rx);
if(chk && chk.length) {
if(!o.id) {
o.id='tmp'+forbidcnt; forbidcnt++;
}
o.value = o.value.replace(rx,'');
alert("Nur Zahlen und Punkte als Eingabe erlaubt!");
}
}
</script>
</HEAD>
<BODY>
<p align=center><H1 align=center>Überschrift</H1></p>
<hr><br>
<form name="showTXT" method="get" action="bearbeiten.php">
<table width="100%" cellpadding=10 cellspacing="0" border="0">
<tr>
<td>Name1</td>
<td><input type=text name=name1 value=666 onkeyup="javascript:forbid(this,'[^0-9...-]')"></td>
</tr>
<tr>
<td>Name2</td>
<td><input type=text name=name2 value=-25 onkeyup="javascript:forbid(this,'[^0-9...-]')"></td>
</tr>
</table>
</form>
</body>
</html>
Ich hoff es ist das, was du gemeint hast.
Vielen Dank fürs posten.
Gruß Christian
Hallo Christian,
Ich hoff es ist das, was du gemeint hast.
Ja danke, das ist doch schon recht komfortabel.
Als einfache Notlösung bleibt erstmal wohl nur onchange, um die ganze Eingabe
zu bearbeiten:
<input type=text name=name1 value=666
onkeyup="forbid(this,'[^0-9...-]')"
onchange="if(document.ids){forbid(this,'[^0-9...-]')}">
Grüsse
Cyx23
Hallo!
Mit onchange funktioniert es. Es ist so zwar nicht optimal, aber es reicht.
Vielen Dank für die Hilfe!
Gruß Christian
Hi,
Also mit dem IE klappt das einwandfrei. Aber mit Netscape 4.79 läuft er nur bis if(chk && chk.length) und ignoriert den Rest.
das kann nur bedeuten, dass (chk && chk.length) = false ist.
Gruß
Wurf