/************* * JS form validation for Turshija Framework * This JS works in combination with forms.class.php * @author Boris Vujicic - turshija@gmail.com **************/ (function() { var preventSubmit = false; var validateEmail = function(email) { var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return re.test(email); }, showError = function( $input, greska ) { $input.addClass('formError-input'); $input.after(''+greska+''); preventSubmit = true; }, clearError = function( $input ) { $input.removeClass('formError-input'); if ($input.next().hasClass('formErrors')) { $input.next().remove(); } }, clearErrors = function() { $('.formErrors').remove(); preventSubmit = false; }, validateInput = function($input) { var temp; // Ocisti trenutnu gresku nad ovim inputom (ako postoji) clearError( $input ); // Provera za required field temp = $input.data('required'); if ( temp ) { if ( $input.val() === "" ) { showError($input, 'This field is required!'); return true; // isto kao i continue } } // Provera za min length temp = $input.data('minlength'); if ( temp ) { if ( $input.data('required') === false) { return true; } if ( $input.val().length < temp ) { showError($input, 'Text has to be longer than ' + temp + ' characters'); return true; // isto kao i continue } } // Provera za validan email temp = $input.data('filter-email'); if ( temp ) { if ( !validateEmail( $input.val() ) ) { showError($input, 'Invalid email address !'); return true; // isto kao i continue } } }; var $forms = $('form'); $forms.submit(function(e) { var $form = $(this); // Ako je data-validate false, onda prekida validaciju if ( !$form.data('validate') ) { return true; } preventSubmit = false; $form.find('input').each(function() { console.log( $(this) ); validateInput( $(this) ); }); if (preventSubmit) { e.preventDefault(); console.log('submit prevented !'); } }); $forms.find('input').on('blur', function() { validateInput( $(this) ); }); })();