Ciao, in una semplice applicazione che sto costruendo sto avendo un grattacapo su una cosa apparentemente semplice, ovvero questa: nel codice che riporto qui sotto quando la variabile k avrà lunghezza 3 caratteri, dovrebbe entrare nel ciclo di verifica di quanto scritto ma in realtà quando ha anche sun solo carattere salta dentro il secondo if annidato, quello con la condizione v.indexOf('no') per capirsi.
La spiegazione dello script è abbastanza semplice: lo script viene richiamato dall'evento keyup di una text box che passa il proprio id alla funzione textInput, questa prende la stringa digitata dal campo di testo e la passa a k; quando k è di tre caratteri minimo viene soddisfatta la prima condizione e va alla verifica....codice:function textInput(id) { var k = document.getElementById(id).value; if (k.length >= 3) { var v = verifica(id); if (v.indexOf('si') > 0) { document.getElementById(id + 'Explanation').innerHTML = 'Il nickname esiste già, cortesemente scrivine un altro.'; } if (v.indexOf('no') > 0) { document.getElementById(id + 'Explanation').innerHTML = 'Ok!'; } } };
.... il problema è proprio che non fa esattamente questo ma nonostante sia al primo carattere ad esempio, entra nella seconda condizione e questo per me non ha senso. Non dovrebbe entrare lì, anzi dovrebbe proprio saltare l'intero ciclo di annidamento.
Vi ho allegata un'immagine dove si vede parte della pagina e firebug con i campi di controllo evidenziati.
Spero di essere stato chiaro, mi date una mano? Grazie.