Contare i caratteri user e dominio

Shyson

Utente Attivo
19 Ago 2012
1.179
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 + '');
}
}
 
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;
                }
 
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
 
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.
 
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)" />
 
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?
 
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.
 
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.
Si ho visto
 
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 + '' );
}
}
 

Discussioni simili