si, data mi ritorna dal server ma perché è concettualmente sbagliato come dici? io con lo stesso codice faccio il controllo sue due campi diversi (due piccioni con una fava) e mi serve distinguere se il data è riferito ad email o a username in modo da settare a true la variabile giusta e non capisco come fare altrimenti a controllare tutti i campi senza usare le variabili globali
questo è il codice per intero
ho sostituito l'if con uno switch ma concettualmente non cambia nullacodice:var email = false; var username = false; var password = false; var cpassword = false; $(document).ready(function() { /* disabilita il pulsante per l'invio del form */ $('input[value=register]').attr({ disabled: 'disabled' }); /* controllo il campo username o email */ $('input[type=text]').blur(function() { var error = false; var name = $(this).attr('name'); var value = $(this).val(); /* controllo formato email */ if (name == 'email') { var pattern = /^[a-z0-9._-]+@[a-z0-9.-]+\.[a-z0-9]{2,4}$/; if (!pattern.test(value)) { error = true; showErrorMessage('email non valida', 'email') } } /* controllo formato username */ if (name == 'username') { pattern = /^[a-z0-9]{6,10}$/; if (!pattern.test(value)) { error = true; showErrorMessage('username non valido', 'username'); } } /* controllo univocità campo */ if (!error) { $.ajax({ type: 'post', url: 'dispatcher.php', data: 'action=check&field=' + name + '&value=' + value, success: function(data) { switch (name) { case 'email': if (data == 'ok') { email = true; }else { showErrorMessage('email'); } break; case 'username': if (data == 'ok') { username = true; }else { showErrorMessage('username'); } break; } } }); } }); /* controllo i campi password */ $('input[type=password]').blur(function() { var name = $(this).attr('name'); var value = $(this).val(); if (name == 'password') { if (value != undefined && value.length > 0) { password = true; } else { showErrorMessage('password non valida', 'password'); } } if (name == 'cpassword') { if (value != undefined && value.length > 0) { var pwd = $('input[name=password]').val(); if (value == pwd) { cpassword = true; } else { showErrorMessage('le password non corrispondono', 'cpassword'); } } else { showErrorMessage('password non valida', 'cpassword'); } } }); /* nascondo gli eventuali messaggi di errori per i campi validi */ if (email) { hideErrorMessage('email'); } if (username) { hideErrorMessage('username'); } if (password) { hideErrorMessage('password'); } if (cpassword) { hideErrorMessage('cpassword'); } /* se i dati nei campi sono corretti riabilito il pulsante di invio */ if (email && username && password && cpassword) { $('input[value=register]').removeAttr('disabled'); } /* DEBUG: stampa valori */ $('div#status > span#email').html(email ? 'true' : 'false'); $('div#status > span#username').html(username ? 'true' : 'false'); $('div#status > span#password').html(password ? 'true' : 'false'); $('div#status > span#cpassword').html(cpassword ? 'true' : 'false'); }); function showErrorMessage(message, target) { $('span.error#' + target).html(message).css({ display: 'inline' }); } function hideErrorMessage(target) { $('span.error#' + target).css({ display: 'none' }); }

Rispondi quotando