Ho notato che seppur funzionando, non funziona bene all'onkeyup, mi spiego: se io scrivo nel campo esce "Inserire una mail valida" fino a quando è scritta correttamente, se però cancello il campo, la scritta non se ne va, cosa che invece dovrebbe fare, visto che il campo non è obbligatorio http://photoman.altervista.org/guestbook/form.php
Codice PHP:
//Valida mail
function validaMail(strEmail) {
var reg = new RegExp("^([A-Za-z0-9!#$%&'*+/=?^_~`{|}](([A-Za-z0-9!#$%&'*+/=?^_~`{|}]*[.]?[A-Za-z0-9!#$%&'*+/=?^_~`{|}]+))*([-]?[A-Za-z0-9!#$%&'*+/=?^_~`{|}]+)?(([A-Za-z0-9!#$%&'*+/=?^_~`{|}]*[.]?[A-Za-z0-9!#$%&'*+/=?^_~`{|}]+))*@[A-Za-z0-9]+[-]?[A-Za-z0-9]+(.[a-z]{2,6}))$");
return reg.test(strEmail);
}
//Conta lunghezza User e Dominio
function contaEmail() {
var val = document.forms.mioform1;
var tuttoOK=true;
document.getElementById('contaEmail').innerHTML = "";
document.getElementById('validaMail').innerHTML = "";
if (!validaMail(val.suoemail.value)) {
document.getElementById('validaMail').innerHTML = "Inserire una Mail valida";
tuttoOK=false
}
if (val.suoemail.value.indexOf('@')>=0) {
var username=val.suoemail.value.split('@')[0];
var dominio=val.suoemail.value.split('@')[1];
if(username.length>6)document.getElementById('contaEmail').innerHTML += "Username: max 6 caratteri<br />";
if(dominio.length>5)document.getElementById('contaEmail').innerHTML += "Dominio: max 5 caratteri";
tuttoOK=(document.getElementById('contaEmail').innerHTML=="");
}
if (tuttoOK) {
val.suoemail.style.borderColor='';
val.suoemail.style.backgroundColor='';
return true
}
else {
val.suoemail.style.borderColor='black';
val.suoemail.style.backgroundColor='#d8ecff';
val.suoemail.focus();
return false
}
}
...
<input type="text" name="suoemail" class="campi1" onkeyup="contaEmail(); validaMail()" />
<div id="contaEmail"></div><div id="validaMail"></div>