/////////////////////////////////////////////////////////////////////////////////////////////////// //// Zahl Validierungsfunktionen /////////////////////////////////////////////////////////////////////////////////////////////////// function validateNumber( field, fieldName, numberFormat, groupChar, decimalChar, numberFormatError, interval, valueMin, valueMax, possValueList, impossValueList ) { // Wert der Zahl auslesen var input = field.value; var error = false; // Wenn Feld leer wird nichts geprüft var tmValue = input + 'a'; if ( tmValue.length == 1 ) { return true; } else { if ( tmValue.charAt(0) == '+' ) { field.value = input.substring(1); input = field.value; } } // 1. Format der Zahl wird überprüft if ( !checkNumberFormat(fieldName, input, numberFormat, numberFormatError) ) { error = true; } else { // Zahl einparsen nachdem das Muster überprüft wurde var inputNumber = parseNumber(input, numberFormat,groupChar, decimalChar); // Prüfen ob eine Zahl ein Vielfaches eines bestimmten Wertes ist if ( interval != null) { if ( !checkInterval(fieldName, inputNumber, interval, numberFormat,groupChar, decimalChar ) ) { error = true; } } // Ist der Minimalwert eingehalten? if ( valueMin != null) { if ( !checkMinNumber( fieldName, inputNumber, valueMin, numberFormat,groupChar, decimalChar) ) { error = true; } } // Ist der Maximalwert eingehalten? if ( valueMax != null) { if ( !checkMaxNumber( fieldName, inputNumber, valueMax, numberFormat,groupChar, decimalChar) ) { error = true; } } // Ist die Zahl in der Liste mit gültigen Werten enthalten? if ( possValueList != null) { if ( !checkPossValueList( fieldName, inputNumber, possValueList, numberFormat,groupChar, decimalChar) ) { error = true; } } // Zahl darf nicht in der Folgenden Liste vorkommen if ( impossValueList != null) { if ( !checkImpossValueList( fieldName, inputNumber, impossValueList, numberFormat,groupChar, decimalChar) ) { error = true; } } } // Wenn irgendwo ein Fehler aufgetreten ist dann Focus setzen damit korrigiert werden kann if ( error ) { field.focus(); field.select(); return false; } return true; } function checkNumberFormat( fieldName, value, numberFormat, numberFormatError) { // numberFormat kann beispielweise in Form "###00.0" kommen // dabei müssen 2 Stellen vor dem Komma angegeben werden und eine danach // Trenner ist hierbei ein Punkt // Zwei Versionen müssen geprüft werden einmal mit Trenner und einmal ohne // Dabei wird überprüft ob die Eingabe etwas anderes als Zahlen enthalt //1. regExp bilden über regExp damit die Zahl überprüft werden kann var reg = eval("/" + numberFormat + "/"); var result = value.match(reg); if (!result ) { // Fehler entweder keine rationalen Zahlen erlaubt oder // mehrere Zeichen abweichend von Zahlen msg = "Eingabe für arg0 entspricht nicht dem vorgegebenen Format arg1"; msg = msg.replace(/arg0/ , fieldName); msg = msg.replace(/arg1/ , numberFormatError); alert( msg ); return false; } return true; } function parseNumber( numberString, numberFormat, groupChar, decimalChar) { // Versuche die Zahl mit dem zugeordneten Format zu parsen // Im Format steht ein Dezimal trenner welcher nicht 0 oder # ist // dieser muss ersetz werden mit Punkt // Sicherheitshabler String erzeugen numberString = "a" + numberString; numberString = numberString.replace(eval("/\\" + groupChar + "/g"), ''); numberString = numberString.replace(eval("/\\" + decimalChar + "/"), "."); numberString = numberString.substring(1, numberFormat.length); return numberString*1; } function checkInterval( fieldName, inputNumber, interval, numberFormat,groupChar, decimalChar ) { var intervalNumber = parseNumber( interval, numberFormat,groupChar, decimalChar ); var rest = inputNumber % intervalNumber; if ( rest != 0 ) { msg = "Der Wert in Feld arg0 muss ein Vielfaches von arg1 betragen."; msg = msg.replace(/arg0/ , fieldName); msg = msg.replace(/arg1/ , interval); alert(msg); return false; } return true; } function checkMinNumber( fieldName, inputNumber, valueMin, numberFormat,groupChar, decimalChar ) { var minNumber = parseNumber( valueMin, numberFormat,groupChar, decimalChar ); if ( minNumber > inputNumber ) { msg = "Der Minimalwert im Feld arg0 ist arg1!"; msg = msg.replace(/arg0/ , fieldName); msg = msg.replace(/arg1/ , valueMin); alert(msg); return false; } return true; } function checkMaxNumber( fieldName, inputNumber, valueMax, numberFormat,groupChar, decimalChar ) { var maxNumber = parseNumber( valueMax, numberFormat,groupChar, decimalChar ); if ( (maxNumber*1) < (inputNumber *1)) { var msg = 'Der Maximalwert im Feld arg0 ist arg1!'; msg = msg.replace( /arg0/, fieldName); msg = msg.replace( /arg1/, valueMax); alert(msg); return false; } return true; } function checkPossValueList( fieldName, inputNumber, possValueList, numberFormat,groupChar, decimalChar ) { possList = ""; delim = "\n"; for ( var i=0; i< possValueList.length; i++ ) { // Liste für Message erstellen, wenn der Wert nicht gefunden wurde // ist die Liste vollständig possList = possList + delim + possValueList[i]; delim = ",\n"; var possNumber = parseNumber( possValueList[i], numberFormat,groupChar, decimalChar ) if ( possNumber == inputNumber ) { // Treffer ohne Fehlermeldung beenden return true; } } // Offensichtlich hat kein Wert getroffen Fehlermeldung generieren var msg = 'Es sind nur folgende Werte für arg0 erlaubt: arg1'; msg = msg.replace( /arg0/, fieldName); msg = msg.replace( /arg1/, possList); alert(msg); return false; } // Eine Zahl darf nicht in einer Liste enthalten sein function checkImpossValueList( fieldName, inputNumber, impossValueList, numberFormat,groupChar, decimalChar ) { var impossList = ""; var delim = "\n"; var found = false; for ( var i=0; i< impossValueList.length; i++ ) { // Liste für Message erstellen impossList = impossList + delim + impossValueList[i]; delim = ",\n"; var impossNumber = parseNumber( impossValueList[i], numberFormat,groupChar, decimalChar ) if ( impossNumber == inputNumber ) { // Treffer Fehlermeldung nach Schleife erst Meldung vervollständigen found = true; } } if ( found ) { // Offensichtlich hat kein Wert getroffen Fehlermeldung generieren var msg = 'Folgende Werte sind für arg0 nicht erlaubt: arg1'; msg = msg.replace( /arg0/, fieldName); msg = msg.replace( /arg1/, impossList); alert(msg); return false; } return true; } /////////////////////////////////////////////////////////////////////////////////////////////////// //// Ende Zahl Validierungsfunktionen ///////////////////////////////////////////////////////////////////////////////////////////////////