/** * Sprawdzenie czy adres email jest poprawny * @param elementId - wskazanie na element ( id ) */ function isValidEmail( elementId ) { var result = false; if ( isEmpty( elementId ) ) { result = false; } else { var email = getValue( elementId ); var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i if ( filter.test( email ) ) { result = true; } else { result = false; } } return result; } /** * Wyświetlenie komunikatu błędu, zaznaczenie elementu z błędem. * @param elementId - wskazanie na element ( id ) * @param errorText - komunikat do wyświetlenia */ function showError( elementId, errorText ) { markElement( elementId ); alert( errorText ); //document.getElementById( elementId ).focus(); } /** * @param elementId - element id */ function noError( elementId ) { unmarkElement( elementId ); //document.getElementById( elementId ).blur(); } /** * Sprawdzanie czy element jest niepustym elementem. * @param elementId - wskazanie na element ( id ) * @param minimumLength - minimalna długość elementu - domyślnie 1 * @return true jeśli element jest niepusty i posiada podaną długość */ function isEmpty( elementId, minimumLength ) { minimumLength = Math.round( Math.abs( minimumLength ) ) || 1; var value = getValue( elementId ); value = trim( value ); if ( ( value == null) || ( value == "" ) || ( value.length < minimumLength ) ) { return true; } else { return false; } } /** * Sprawdzanie czy zaznaczony jest ( czyli niepusta wartość ) element listy. * Domyślnie element pierwszy powinien mieć pustą wartość. * @param elementId - wskazanie na listę ( id ) * @return true jeśli jest wybrany niepusty element, inaczej false */ function isSelectedList( elementId ) { if ( !isEmpty( elementId ) ) { return true; } else { return false; } } /** TODO - przetestowac dla wszyskich !!! * Sprawdzanie czy pole wyboru jest wybrane. * @param elementId - wskazanie na listę ( id ) * @return true jeśli element jest zaznaczony, inaczej false */ function isCheckedAll( elementId, formId ) { var returnValue = 1; for (var i=0; i < document.forms[ formId ][ elementId ].length; i++) { var checkeValue = document.forms[ formId ][ elementId ][i].checked; //if ( document.forms[formId][elementId][i].checked == 1 ) { returnValue = returnValue && checkeValue; } return returnValue; } function isChecked( elementId, formId ) { if ( document.forms[ formId ][ elementId ].checked == 1 ) { return 1; } else { return 0; } } /* Walidacja - opis formatu pol: // nazwa pola, komunikat błędu, czy wymagane, typ walidacji, opcje_walidacji // TODO typ walidacji [ text, email, list( gdy ma byc wybrany element niepusty ), number, postcode, nip, regon, min, max, checbox ] // gdy min, max - to kolejny parametr liczba znaków; postcode - liczba znakow lub maska ?? zastanowic sie // pola powinny być w takiej kolejności w jakiej pojawiają się na stronie var requiredFields = new Array(); requiredFields[ 0 ] = [ "nazwa_pola", "komunikat_bledu", "czy_wymagane", "typ_walidacji", "opcje_walidacji" ]; requiredFields[ 1 ] = [ "contact_subject", "Proszę wybrać temat wiadomości", "1", "list" ]; TODO: docelowo konfiguracja formularza w pliku xml */ /** * Walidacja formularza. * @param formId - wskazanie na formularz * @param fields - pola formularza * @return true jeśli są spełnione wszystkie reguły pól formularza, inaczej false */ function validateForm( formId, fields ) { var formValidated = true; var requiredText = "Pole wymagane."; //var errorText = new Array(); var i = 0; // TODO dokonczyć pozostałe elementy for ( i = 0; i < fields.length; i++ ) { var correct = false; var notEmpty = false; var elementName = fields[ i ][ 0 ]; var errorText = fields[ i ][ 1 ]; var isRequired = fields[ i ][ 2 ]; var elementType = fields[ i ][ 3 ]; var elementOptions = fields[ i ][ 4 ]; if ( isRequired == "0" || isRequired == "" || isRequired == null ) { notEmpty = true; } else { notEmpty = !isEmpty( elementName ); if ( errorText != "" ) { errorText = requiredText + "\n" + errorText; } else { errorText = requiredText; } } switch( elementType ) { case "text": //correct = !isEmpty( elementName ); correct = true; break; case "email": correct = isValidEmail( elementName ); break; case "list": correct = isSelectedList( elementName ); break; case "checkbox": correct = isChecked( elementName, formId ); break; case "checkboxall": correct = isCheckedAll( elementName, formId ); break; case "number": //correct = !isNumber( elementName ); case "nip": //correct = !isNip( elementName ); case "regon": //correct = !isRegon( elementName ); case "postcode": //correct = !isPostCode( elementName ); default: //correct = !isEmpty( elementName ); correct = true; break; } //alert( "DBG: after switch: " + elementType ); formValidated = formValidated && notEmpty && correct; // error message if ( !formValidated ) { showError( elementName, errorText ); } else { noError( elementName ); } if ( !formValidated ) { break; } } if ( formValidated == true ) { document.forms[ formId ].submit(); return true; } else { return false; } }