Scusate indentazione ...
codice:
(function($){
$.fn.formValidate = function() {
var config = {
'shaker' : true,
'shakers' : 5,
'showMessage' : false,
'errorClass' : 'error',
'requiredClass' : 'required',
'requiredMail' : 'mail',
'requiredNumber' : 'numeric',
'url' : 'include/ajax/sendEmail.php',
'type' : 'post',
'cache' : false,
'btnSend' : 'send',
'dataType' : 'json',
'global' : false,
messages : {
'blank' : 'Campo Richiesto',
'check' : 'Devi accettare',
'email' : 'Indirizzo e-amil non valido',
'numbe' : 'Il campo deve essere numerico',
'conf' : 'Acconsenti all\'utilizzo dei propri dati personali per l\'invio di informazioni relativamente agli argomenti trattati da questo sito. KickBoxing team tratterà le informazioni fornite nel rispetto della normativa sulla privacy, ai sensi dell\'art. 13 del decreto legislativo del 30/06/2003 n. 196, che abroga e sostituisce la legge del 31/12/1996 n. 675 (tutela della privacy). '
}
}
var options = $.extend(config, options);
return this.each(function() {
var error=false;
$(this).find('#'+config.btnSend+'').click(function(){
if(!confirm(config.messages.conf) ) return false
else {
var espressione = /^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$/;
var form = $(this).parent();
form.submit(function(){
var validMe = {'errors':false}
//cicliamo tutti gli input trovati
$(this).find('.'+config.requiredClass+'').each(function() {
var $input = $(this);
var type = $input.attr('type');
var groupName = $input.attr('name');
//controlliamo che il contenuto dell'input non sia vuoto
if(!$input.val()){
error = true;
errorType = 'blank';
validMe.errors = true;
//se si tratta di una checkbox che non è stata selezionata
} else if( (type == 'checkbox') && ( !$input.is(':checked') ) ){
error = true;
errorType = 'check';
validMe.errors = true;
//se si tratta di una email controlliamo che ci sia il simbolo "@" e "."
//} else if( $input.hasClass(config.requiredMail) && ( ($input.val().indexOf('@') == -1) || ($input.val().indexOf('.') == -1) ) || !espressione.test($input.val()) ){
} else if($input.hasClass(config.requiredMail) ){
if(!espressione.test($input.val()) || ($input.val().indexOf('@') == -1) || ($input.val().indexOf('.') == -1) ) {
error = true;
errorType = 'email';
validMe.errors = true;
}
//se si tratta di un input numerico controlliamo che il valore inserito sia di questo tipo
} else if( ($input.hasClass(config.requiredNumber)) && isNaN($input.val()) ){
error = true;
errorType = 'numbe';
validMe.errors = true;
//se non è nessuno di questi casi resettiamo l'errore
} else {
error = false;
errorType = null;
}
// notifichiamo l'utente dell'errore di validazione
if(error){
// assegnamo la classe di errore all'input
$input.addClass(config.errorClass);
// se è abilitata l'opzione shaker, shakeriamo un po' l'input !!!!
if(config.shaker){
for (i=0; i<config.shakers; i++) {
$input.animate({ marginLeft: "5px"}, 100 );
$input.animate({ marginLeft: "-5px"}, 100 );
}
$input.animate({ marginLeft: "0"}, 100 );
}
// se è abilitata l'opzione showMessage mostriamo anche un messaggio
if(config.showMessage){
// il messaggio viene mostrato solo se non è già stato mostrato
if($input.next('label').length == 0){
$input.after('<label class="'+config.errorClass+'">'+config.messages[errorType]+'</label>');
} else{
$input.next('label').html(config.messages[errorType]);
}
}
}
// se è abilitata l'opzione showMessage e non ci sono errori togliamo il messaggio
if(!error && $input.next('label').length != 0) $input.next('label').remove();
// se l'input che stiamo controllando non contiene errori ed ha la classe error, la togliamo
if(!error && $input.hasClass(config.errorClass)){
$input.removeClass(config.errorClass);
if(config.removeCustom) config.removeCustom($input);
}
});
// se non ci sono errori procedo con il submit del formulario
if(error) return false;
else {
$.ajax({
cache : config.cache,
url : config.url,
data : $(this).serialize(),
dataType : config.dataType,
type : config.type,
global : config.global,
beforeSend: function(){},
error : function(){},
success : function(data){
switch(data.succ){
case 0:
//incorenza del codice captcha
alert('Il codice di controllo non coincide');
$(form).find('.code').val('');
$(this).dequeue();
break;
case 1:
//mail inviata
$(form).find('.required').val("");
alert('eMail inviata correttamente');
$(this).dequeue();
break;
default:
//errore nell'invio
$(form).find('.code').val('');
alert('eMail non inviata a causa di un errore tecnico');
$(this).dequeue();
break;
}
}
});
return false;
}
});
}
});
});
}
})(jQuery);