Contare i caratteri user e dominio

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Si lo so, è una prova che avevo fatto anche io, non va bene perché la lunghezza del dominio dipende da quella dell'user, io ho bisogno di fare i controlli indipendenti
Ciao,

variabile[0] per user

variabile[1] per il dominio

devi fare lo split sulla @


Valeria.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
ho memorizzato la lunghezza dell'user e lo aggiunta ad 1 che è la chiocciola e a 8 che è la lunghezza massima
il ragionamento è sempre quello di prima ma con una variabile per la user
Codice:
<script>
            var nuser;
            function contaEmail(suoemail) {
                var val = document.forms.mioform1;
                var max=5  
                if(suoemail.indexOf('@')<0) {
                    nuser = suoemail.length;
                    val.suoemail.value = val.suoemail.value.substring(0,max);
                    output = nuser > max ? "Username: max 5 caratteri" : '';
                } 
                else {
                    document.getElementById('contaUserDom').innerHTML = '';
                    max =  8 + nuser + 1;                     
                    val.suoemail.value = val.suoemail.value.substring(0 ,max);
                    output = suoemail.value > max ? "Dominio: max 8 caratteri" : '';
                }
                if(output.length != 0) { 
                    document.getElementById('contaUserDom').innerHTML = (output + '');
                }
            }  
        </script>
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Lo split c'è già, come le metto sto variabili che sto confuso:confused:
Dove splitti i caratteri prima di @ con [0] e dopo @ con [1]


Codice:
var variabile=document.nome_form.nomecampo.value.split('@')[0];

e

var variabile=document.nome_form.nomecampo.value.split('@')[1];
 

Shyson

Utente Attivo
19 Ago 2012
1.119
1
38
ho memorizzato la lunghezza dell'user e lo aggiunta ad 1 che è la chiocciola e a 8 che è la lunghezza massima
il ragionamento è sempre quello di prima ma con una variabile per la user
Codice:
<script>
            var nuser;
            function contaEmail(suoemail) {
                var val = document.forms.mioform1;
                var max=5  
                if(suoemail.indexOf('@')<0) {
                    nuser = suoemail.length;
                    val.suoemail.value = val.suoemail.value.substring(0,max);
                    output = nuser > max ? "Username: max 5 caratteri" : '';
                } 
                else {
                    document.getElementById('contaUserDom').innerHTML = '';
                    max =  8 + nuser + 1;                     
                    val.suoemail.value = val.suoemail.value.substring(0 ,max);
                    output = suoemail.value > max ? "Dominio: max 8 caratteri" : '';
                }
                if(output.length != 0) { 
                    document.getElementById('contaUserDom').innerHTML = (output + '');
                }
            }  
        </script>
Ora va già meglio, riconosce la lunghezza di entrambi, ma al dominio non esce l'alert dell id
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
di quale alert parli?
non vedo alert nel tuo primo post
 

Shyson

Utente Attivo
19 Ago 2012
1.119
1
38
Dove splitti i caratteri prima di @ con [0] e dopo @ con [1]


Codice:
var variabile=document.nome_form.nomecampo.value.split('@')[0];

e

var variabile=document.nome_form.nomecampo.value.split('@')[1];
Vedo che l'ultimo codice che mi ha dato criric funziona, manca solo l'avviso che richiama l'id del dominio...poi non so quale va meglio
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Vedo che l'ultimo codice che mi ha dato criric funziona, manca solo l'avviso che richiama l'id del dominio...poi non so quale va meglio
Corretto è cosi:


Codice:
<script type="text/javascript">
var stringa = "valeria@pippofranco.it";
var splitta = stringa.split("@");
var strl = splitta[0];
var strlength = splitta[1];
document.write("Caratteri inseriti per Username: "+strl.length+ " Username: " + strl.toString() + "<br>");
document.write("Caratteri inseriti per il Dominio: "+strlength.length+ " Dominio " + strlength.toString());
</script>
Risultato:

Caratteri inseriti per Username: 7 Username: valeria
Caratteri inseriti per il Dominio: 14 Dominio pippofranco.it


Valeria.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
aggiungo il pezzo che manca al mio
HTML:
<script>            
            var nuser;
            function contaEmail(suoemail) {
                var val = document.forms.mioform1;
                var max=5;
                if(suoemail.indexOf('@')<0) {
                    nuser = suoemail.length;
                    val.suoemail.value = val.suoemail.value.substring(0,max);
                    output = nuser > max ? "Username: max 5 caratteri" : '';
                } 
                else {
                    document.getElementById('contaUserDom').innerHTML = '';
                    var dominio = val.suoemail.value.split('@');
                    max =  8 + nuser + 1;                     
                    val.suoemail.value = val.suoemail.value.substring(0 ,max);
                    output = dominio[1].length > 8 ? "Dominio: max 8 caratteri" : '';
                }
                if(output.length != 0) { 
                    document.getElementById('contaUserDom').innerHTML = (output + '');
                }
            }  
        </script>
 

Shyson

Utente Attivo
19 Ago 2012
1.119
1
38
aggiungo il pezzo che manca al mio
HTML:
<script>            
            var nuser;
            function contaEmail(suoemail) {
                var val = document.forms.mioform1;
                var max=5;
                if(suoemail.indexOf('@')<0) {
                    nuser = suoemail.length;
                    val.suoemail.value = val.suoemail.value.substring(0,max);
                    output = nuser > max ? "Username: max 5 caratteri" : '';
                } 
                else {
                    document.getElementById('contaUserDom').innerHTML = '';
                    var dominio = val.suoemail.value.split('@');
                    max =  8 + nuser + 1;                     
                    val.suoemail.value = val.suoemail.value.substring(0 ,max);
                    output = dominio[1].length > 8 ? "Dominio: max 8 caratteri" : '';
                }
                if(output.length != 0) { 
                    document.getElementById('contaUserDom').innerHTML = (output + '');
                }
            }  
        </script>
Ora li riconosce:mavieni:

nel fare le prove vedo che il cursore rimane sempre in fondo al dominio, non si lascia spostare dai tasti-freccia
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
aggiungo il pezzo che manca al mio
HTML:
<script>            
            var nuser;
            function contaEmail(suoemail) {
                var val = document.forms.mioform1;
                var max=5;
                if(suoemail.indexOf('@')<0) {
                    nuser = suoemail.length;
                    val.suoemail.value = val.suoemail.value.substring(0,max);
                    output = nuser > max ? "Username: max 5 caratteri" : '';
                } 
                else {
                    document.getElementById('contaUserDom').innerHTML = '';
                    var dominio = val.suoemail.value.split('@');
                    max =  8 + nuser + 1;                     
                    val.suoemail.value = val.suoemail.value.substring(0 ,max);
                    output = dominio[1].length > 8 ? "Dominio: max 8 caratteri" : '';
                }
                if(output.length != 0) { 
                    document.getElementById('contaUserDom').innerHTML = (output + '');
                }
            }  
        </script>
Ciao criric, + un controllo per il . cosi se trova il . dopo il primo controllo e per username accetta

[CODEl]hhhhh@tuttomio.io.io.io.io.io.io.io[CODEl]
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
e una if per il cursore
Codice:
if(dominio[1].length > 8)
   val.suoemail.value = val.suoemail.value.substring(0 ,max);
 

Shyson

Utente Attivo
19 Ago 2012
1.119
1
38
e una if per il cursore
Codice:
if(dominio[1].length > 8)
   val.suoemail.value = val.suoemail.value.substring(0 ,max);
Ok va ancor meglio, gli avvisi escono e l'inserimento si blocca, ho notato però una cosa: inserisco l'user e poi passo al dominio, e se poi torno all'user non mi blocca più l'inserimento, cioè, ne posso inserire fin che voglio

PHP:
      var nuser;
            function contaEmail(suoemail) {
               var val = document.forms.mioform1;
                var max=5;
                if(suoemail.indexOf('@')<0) {
                    nuser = suoemail.length;
                    val.suoemail.value = val.suoemail.value.substring(0,max);
                    output = nuser > max ? "Username: max 5 caratteri" : '';
                } 
                else {
                    document.getElementById('contaUserDom').innerHTML = '';
                    var dominio = val.suoemail.value.split('@');
                    max =  8 + nuser + 1;  
                    if(dominio[1].length > 8)
                   val.suoemail.value = val.suoemail.value.substring(0 ,max);
                    output = dominio[1].length > 8 ? "Dominio: max 8 caratteri" : '';
                }
                if(output.length != 0) { 
                    document.getElementById('contaUserDom').innerHTML = (output + '');
                }
                    }
 

Shyson

Utente Attivo
19 Ago 2012
1.119
1
38
Ciao criric, + un controllo per il . cosi se trova il . dopo il primo controllo e per username accetta

[CODEl]hhhhh@tuttomio.io.io.io.io.io.io.io[CODEl]
Vale, ho già un codice che controlla la mail

PHP:
function validaMail() {
var f = document.forms.mioform1;
if (f.suoemail.value.length != 0) { 
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-z]{2,6}))$");
if (!f.suoemail.value.match(reg)) {  
document.getElementById('validaMail').innerHTML = "Inserire una Mail valida";
f.suoemail.focus();
return false;
}
else {
document.getElementById('validaMail').innerHTML = "";
}  
} 
else {
document.getElementById('validaMail').innerHTML = "";
}
return true;
}
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,

usi una RegExp per validare le mail e aggiungi anche questo controllo?


:crying:


Passo la Palla.

Buon lavoro.

Un saluto, Valeria :byebye:
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Se inizi con due @@ saltano i controlli
direi che si puo scartare questo script

avevi provato altre soluzioni?
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Perché, spiegami, che c'è che non va?

Ciao,

partendo dal fatto che con javascript puoi colo controllare l'inserimento dei dati da parte dell'utente, l'unico modo per vedere se chi ha inserito la mail è esatta e inviarla con un link per confermare, se la mail è corretta, con il link gli attivi il servizio, se è errata non lo abiliti e il mailer demon ti invia la mail per indirizzo inesistente.

Se io mi trovo a testa con tutti quei controlli esco.

Per la mail fai tutto con la RegExp quandi caratteri prima della @ quanti sono validi secondo le specifice RFC822 e gli stampi solo "inserire un'indirizzo email valido".

Credo sia sufficiente.

E' solo un parere.


Valeria.