Contare i caratteri user e dominio

Shyson

Utente Attivo
19 Ago 2012
1.141
1
38
Questo codice ha lo scopo di contare i caratteri in una mail, la prima parte, quella prima del else funziona, la seconda parte funziona a metà, cioè: mi blocca l'inserimento a 8 caratteri totali (compreso l'user e la chiocciola).

Dovrei invece fare in modo che mi conti e blocchi l'inserimento a 8 caratteri dopo la chiocciola

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

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao,
non sono riuscito a far funzionare il tuo codice ne su FF ne su IE
cmq
forse ti basta aggiungere a max la lunghezza della user + la chiocciola
Codice:
else {
                    var primaparte = suoemail.length + 1;
                    max =  primaparte + 8;
                    
                    val.suoemail.value = val.suoemail.value.substring(primaparte ,max);
                    output = suoemail.length > max ? "Dominio: max 8 caratteri" : null;
                }
 

Shyson

Utente Attivo
19 Ago 2012
1.141
1
38
Ciao,
non sono riuscito a far funzionare il tuo codice ne su FF ne su IE
cmq
forse ti basta aggiungere a max la lunghezza della user + la chiocciola
Codice:
else {
                    var primaparte = suoemail.length + 1;
                    max =  primaparte + 8;
                    
                    val.suoemail.value = val.suoemail.value.substring(primaparte ,max);
                    output = suoemail.length > max ? "Dominio: max 8 caratteri" : null;
                }
Se funziona la prima parte dovrebbe funzionare anche la seconda
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Intendevo che funziona solo la prima parte quella prima di else, è la seconda, quella del dominio che non va
Primo errore

ho fatto un js per controllare gli errori di altri js

Si è verificato un errore: TypeError: suoemail.indexOf is not a function
Linea: 33

Non contare il numero di riga dell'errore in quanto si riferisce alla posizione dell'errore trovato, contando anche le righe precedenti di codice html, css, js ecc...

Per prova metti anche il form.

Valeria.
 

Shyson

Utente Attivo
19 Ago 2012
1.141
1
38
Primo errore

ho fatto un js per controllare gli errori di altri js

Si è verificato un errore: TypeError: suoemail.indexOf is not a function
Linea: 33

Non contare il numero di riga dell'errore in quanto si riferisce alla posizione dell'errore trovato, contando anche le righe precedenti di codice html, css, js ecc...

Per prova metti anche il form.

Valeria.
Questo è la riga del form,

PHP:
<input type="text" name="suoemail" class="campi1" onkeyup="contaEmail(this.value)" />
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Questo è la riga del form,

PHP:
<input type="text" name="suoemail" class="campi1" onkeyup="contaEmail(this.value)" />
Ciao,

Si è verificato un errore: TypeError: output is null
Linea: 43

Valeria.
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Add,

questo if(suoemail.indexOf('@')<0) {

dovrebbe essere if(suoemail.indexOf('@')>=0) {
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Come hai fatto a scoprirlo? Come si corregge?
Ho detto sopra, ho fatto un javascript per controllare gli errori di altri javascript,

se output è nullo richiama la variabile var output = ''; prima della if
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
prova cosi
Codice:
<script>
    function contaEmail(suoemail) {
        var val = document.forms.mioform1;
        max=5
        if(suoemail.indexOf('@')<0) {
            val.suoemail.value = val.suoemail.value.substring(0,max);
            output = suoemail.length > max ? "Username: max 5 caratteri" : '';
        } 
        else {
            document.getElementById('contaUserDom').innerHTML = '';
            max =  14;  
            val.suoemail.value = val.suoemail.value.substring(0 ,max);
            output = suoemail.length > max ? "Dominio: max 8 caratteri" : '';
        }
        if(output.length != 0) { 
            document.getElementById('contaUserDom').innerHTML = (output + '');
        }
    }  
</script>
poi ci spieghi a cosa ti serve?
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Si, ma non è il risultato che voglio ottenere, eppoi la prima parte va bene, è la seconda che fa storie
Se per te va bene codice scritto male,

hai notato che ti cancella i caratteri per l'usernamese maggiori di 5 ma dopo che hai inserito la @ il massimo dei caratteri consentiti per username e dominio è di solo 8 caratteri.

e i messaggi di avviso per queso non escono mai?

V.
 

Shyson

Utente Attivo
19 Ago 2012
1.141
1
38
prova cosi
Codice:
<script>
    function contaEmail(suoemail) {
        var val = document.forms.mioform1;
        max=5
        if(suoemail.indexOf('@')<0) {
            val.suoemail.value = val.suoemail.value.substring(0,max);
            output = suoemail.length > max ? "Username: max 5 caratteri" : '';
        } 
        else {
            document.getElementById('contaUserDom').innerHTML = '';
            max =  8;  
            val.suoemail.value = val.suoemail.value.substring(0 ,max);
            output = suoemail.length > max ? "Dominio: max 8 caratteri" : '';
        }
        if(output.length != 0) { 
            document.getElementById('contaUserDom').innerHTML = (output + '');
        }
    }  
</script>
poi ci spieghi a cosa ti serve?
Il tuo va bene la prima parte ma a 8 TOTALI si ferma, mi serve per controllare la lunghezza dell'user e del dominio di una mail

Questo andrebbe bene ma se al posto dell'alert ci metto l'id, non va più bene

PHP:
function contaEmail(suoemail) {
var output = '';
if(suoemail.indexOf('@')<0) {
output = suoemail.length > 5 ? 'Username: max 5 caratteri' : null;
} 
else {
var dominio = suoemail.split('@')[1];
output = dominio.length > 8 ? 'Dominio: max 8 caratteri' : null;
}
if(output.length != 0) { 
alert( output + '' );
}
}