Jogger: Gleicher Aufruf - unterschiedliche Ergebnisse

Beitrag lesen

Hallo,

ich habe abgespeckt und unten die Sources angegeben.
Ablauf:
In Textareafeld eingeben: 1234567890
In Textfeld springen
   Ergebnis: false
Auf Senden klicken
   Ergebnis: true

Wenn ich in der JS-Routine das mit max8ziffern identische max8ziffern1 aufrufe, kommt korrekterweise zweimal "false".

test.pl:

  
#!/usr/bin/perl -w  
use strict;  
use warnings;  
use CGI;  
use CGI::Carp qw(fatalsToBrowser);  
my ($mitt);  
sub up1  
  {formularausgabe();}  
sub up2  
  {formularausgabe();}  
sub formularausgabe  
  {  
   use CGI qw(header);  
   print header(-type=>'text/html; charset=ISO-8859-1');  
  
   print <<FORMULAR;  
   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">  
   <html>  
   <head>  
   <title>test</title>  
   <script type="text/javascript" src="http://www.example.de/JS/testpruefungen.js"></script>  
   </head>  
   <body>  
   <form action="http://www.example.de/cgi-bin/test.pl" method="post" name="test"  
     onSubmit = "return formulartest(this)">  
     <input type="hidden" name="aufruf" value="2">  
     <textarea id="iMitteilung" name="Mitteilung" rows="2" cols="15"  
           onchange="feldpruefung(this, 'max8ziffern')">$mitt</textarea>  
     <input type="text" name="test" onchange="feldpruefung(this, 'max8ziffern')">  
     <input name="Senden" value="Senden" type="submit">  
  
   </form>  
   </body>  
   </html>  
FORMULAR  
  
}  
  
my $cgi = new CGI;  
$mitt = $cgi->param('Mitteilung');  
if ($cgi->param('aufruf') == 2)  
  {  
   up2();  
  }  
else  
  {  
  up1();  
  }  
  
exit 0;  

testpruefungen.js:

  
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  
}  
  
function formulartest(f)  
   {  
    return feldpruefung(document.getElementById("iMitteilung"), 'max8ziffern')  
   }  
  
function max8ziffern(s)  
{  
alert ("max8ziffern: " + s + " Ergebnis: " + !(/([0-9]{9,})/g).test(s));  
 return !(/([0-9]{9,})/g).test(s)  
}  
  
function max8ziffern1(s)  
{  
alert ("max8ziffern1: " + s + " Ergebnis: " + !(/([0-9]{9,})/g).test(s));  
 return !(/([0-9]{9,})/g).test(s)  
}