globe: Zahl mit Reg. Ausdruck prüfen

Beitrag lesen

n'abend,

ich habe auf Grund eines älteren Beitrags dieses Forums folgende Prüfung eines Textfelds auf den Inhalt "Zahl" eingebaut. Leider lehnt die Routine sämtliche Eingaben als falsch ab (auch wenn nur eine Zahl eingegeben ist):

bist du sicher, dass die korrekte Funktion mit dem korrekten Feld als Argument aufgerufen wird? Bist du sicher, dass du nicht versehentlich eine veraltete Version deines Scripts im Cache hast?

hast du dir die Dokumentation zu RegExp angeschaut und vielleicht auch einen Blick auf die Funktion isNaN() geworfen?

function checkZahl(feld){
checked = true;

die Variable checked ist an dieser Stelle global. Das ist nicht nur Unschön, sondern kann Probleme verursachen.

var checked = true;

Pruefe = new RegExp('/^\d*$/');

Diese RegularExpression trifft dann zu, wenn das Feld leer ist, oder eine bestimmte Menge von Zahlen enthält. Hiermit werden aber nur Ganzzahlen erkannt. Wenn du nicht mit dem RegularExpression-Literal (/.*/) sondern auf die arbeitest, kannst du auf die Delimiter (in deinem Fall /) verzichten; var Pruefe = new RegExp('^\d*$'); sollte also reichen. Wenn du auf jeden Fall eine Zahl haben möchtest, ersetze den * durch ein +.

if(!Pruefe.test(feld.value)){
  alert("Das ist keine gültige Zahl");
  feld.select();
  feld.style.backgroundColor = '#FFFF99';
  checked = false;
}

return checked;
}

Wann / Wo - also in welchem EventHandler - wird diese Funktion denn aufgerufen? onchange? onkeypress? onkeydown? onkeyup?

weiterhin schönen abend...

--
#selfhtml hat ein Forum?
sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|