Problem Formularprüfung mit FIREFOX
David Di Donato
- javascript
hallo zusammen
habe folgendes problem mit Javascript und FireFox....IE ist absolut kein problem....
hier ein kurzer ausschnitt HTML Code(Input)...
*****************
.......
.......
function SimBerechnen()
{
if (validateForm(document.frm))
{
.........
.........
<form name="frm" method="post" action="" onsubmit="" target="oben">
..............
.........
<input type="text" class="evTextBox" name="ValDatum" value="26.12.2006" size="12" maxlength="12" id='ValDatum' tabindex='1' validator='Datum' fehler='Berechnungsdatum'>
...........
...........
************ DAS IST EINGABEMASKE (Ausschnitt) *******
und hier nun meine Javascript Bibliothek ValidateForm
*****************************************************
function validateForm(theForm) {
var elArr = theForm.elements;
for(var i = 0; i < elArr.length; i++) {
with(elArr[i]) {
if (elArr[i].type =='submit' || elArr[i].type =='reset' || elArr[i].type =='hidden')
{
}
else
{
var v = elArr[i].validator;
if (v == "NULL")
{
//Weiter in Schlaufe machen !!!
}
else
{
if (verifypflicht(value,elArr[i].fehler) == false)
{
elArr[i].focus();
elArr[i].select();
return false;
}
if (v == "Zahl")
{
if (verifyzahl(value) == false)
{
elArr[i].focus();
elArr[i].select();
return false;
}
}
if (v == "Datum")
{
if (verifydatum(value) == false)
{
elArr[i].focus();
elArr[i].select();
return false;
}
}
}
}
}
}
return true;
}
function verifypflicht(wert,fehler)
{
if (wert == "") // Pflichtfeld und leer
{
var error = "";
alert (fehler +" / Pflichtfeld!!");
return false;
}
}
function verifyzahl(zahl)
{
var bereich = "0123456789'";
var punkt = 0
for (var i = 0; i < zahl.length; i++)
{
if (bereich.indexOf(zahl.charAt(i)) == -1)
{
if (zahl.charAt(i) == "." && punkt < 1)
{
punkt = punkt + 1;
}
else
{
alert("Ungültige Zahl");
return false;
}
}
}
}
function verifydatum(datum)
{
var error = "";
var datePat = /^(\d{1,2})(.)(\d{1,2})\2(\d{4})$/;
var matchArray = datum.match(datePat); // ist das format ok?
if (matchArray == null)
{
//error = fFeld + name + ": " + fDatum;
alert ("Datum ungültig");
return false;
}
tag = matchArray[1];
monat = matchArray[3];
jahr = matchArray[4];
if (monat < 1 || monat > 12) // check Monatbereich
{
//error = fFeld + name + ": " + fMonat12;
alert ("Monatsbereich ungültig !!");
return false;
}
if (tag < 1 || tag > 31) // check Tagebereich
{
//error = fFeld + name + ": " + fTag;
alert ("Tagesbereich ungültig !!");
return false;
}
if ((monat==4 || monat==6 || monat==9 || monat==11) && tag==31) // check Monate mit nur 30 Tagen
{
//error = fFeld + name + ": " + fMonat + " " + monat + " " + fMonatTag;
alert ("Monate haben nur 30 Tage !!");
return false;
}
if (monat == 2) // check fuer 29. Februar
{
var isleap = (jahr % 4 == 0 && (jahr % 100 != 0 || jahr % 400 == 0));
if (tag > 29 || (tag == 29 && !isleap))
{
//error = fFeld + name + ": " + fFeb + " " + jahr + " " + fText + " " + tag + " " + fTage;
alert ("Check februar !!!");
return false;
}
}
return true; // Datum ist gueltig
}
*******************************
habe das Problem beim Datum.....sagt immer --> Undefined / Pflichtfeld....
bitte helft mir.....
gruss
david di donato
Moin
<input type="text" class="evTextBox" name="ValDatum" value="26.12.2006" size="12" maxlength="12" id='ValDatum' tabindex='1' validator='Datum' fehler='Berechnungsdatum'>
kann JavaScript eigentlich mit diesen selbst erfundenen Attributen (die das HTML nicht mehr validieren lassen) was anfangen?
Ohne es getestet zu haben würde ich vermuten, dass all deine Attributabfragen nur undefined ergeben, nicht nur die Fehlermeldung.
Gruß
rfb
Moin
hab es eben mal rasch getestet und meine Vermutung bestätigt:
IE6 liest (was mir falsch erscheint) die Wert der selbstkreierten Attribute aus, FF2 und Opera9 nicht (Wert=undefined).
Da musst du dir wohl eine andere Möglichkeit ausdenken.
Gruß
rfb
hast du auf eine art ein super formularvalidierungstool, wo man zahlen, datum auf richtigkeit prüfen könnte vor allem flexibel ?
gruss
david
Moin
hab es eben mal rasch getestet und meine Vermutung bestätigt:
IE6 liest (was mir falsch erscheint) die Wert der selbstkreierten Attribute aus, FF2 und Opera9 nicht (Wert=undefined).Da musst du dir wohl eine andere Möglichkeit ausdenken.
Gruß
rfb