ich habe abgespeckt und unten die Sources angegeben.
einfacher wäre es gewesen, grad die lauffähige Ausgabe zu zeiugen, so müßen die dir helfen wollen erstmal alles so zurecht kopieren dass es überhaupt läuft.
Ablauf:
In Textareafeld eingeben: 1234567890
In Textfeld springen
Ergebnis: false
Auf Senden klicken
Ergebnis: trueWenn ich in der JS-Routine das mit max8ziffern identische max8ziffern1 aufrufe, kommt korrekterweise zweimal "false".
Nicht wenn du in beiden Vergleichen die gleiche Funktion aufrufst.
function feldpruefung()
{
var tmpfld = arguments[0].value// In Originalversion mehrere Prüfungen (arguments.length > 4)
var i
for(i = 1; i < arguments.length; i++)
{alert((arguments[i] + "('" + tmpfld + "')"));
if (!(eval(arguments[i] + "('" + tmpfld + "')")))
{
return false
}
}
return true
Statt dem unschönen eval, kannst du hier die Funktionen so aufrufen:
[code lang=javascript]windowarguments[i]
Aber jetzt zum eigentlichen Problem.
> function max8ziffern(s)
> {
> alert ("max8ziffern: " + s + " Ergebnis: " + !(/([0-9]{9,})/g).test(s));
> return !(/([0-9]{9,})/g).test(s)
> }
Ich weiß gar nicht mehr warum das so war, aber dadurch dass du hier einen fixen Regulären Ausdruck verwendest wird dieser immer abwechselnde Ergebnise haben, um das zu vermeiden musst du den Ausdruck mit new regExp() zusammenbauen
~~~javascript
function max8ziffern(s) {
var r = new RegExp(/([0-9]{9,})/);
return !r.test(s)
}
Struppi.