Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    Funzione JavaScript: dove sbaglio?

    Salve a tutti, ho cercato un pò su Internet e ho creato queste due funzioni:

    codice:
    function verifyNumbers(){
    var input1 = document.funzione.inizio.value;
    var input2 = document.funzione.fine.value;
    if(isNaN(input1)){ alert("Prima di continuare devi inserire nei campi un numero di 4 cifre."); return false; }
    if(isNaN(input2)){ alert("Prima di continuare devi inserire nei campi un numero di 4 cifre."); return false; }
    }
    
    function verifyLength(){
    var input1 = document.funzione.inizio.length;
    var input2 = document.funzione.fine.length;
    if(input1 > 4){ alert("Prima di continuare devi inserire nei campi un numero di 4 cifre."); return false; }
    if(input2 > 4){ alert("Prima di continuare devi inserire nei campi un numero di 4 cifre."); return false; }
    }
    Il form contiene questi attributi:
    codice:
    name="funzione" onsubmit="return verifyNumbers(); return verifyLength();"
    E i due campi di input hanno rispettivamente i nomi "inizio" e "fine".
    Se inserisco delle lettere verifyNumbers fa il suo dovere; se inserisco nel campo più di 4 cifre non succede niente.
    Dove sbaglio?
    Grazie a tutti.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,452
    onsubmit="return verifyNumbers(); return verifyLength();"

    potrei sbagliarmi, ma il primo return penso che inibisca l'esecuzione della seconda funzione, prova a mettere solo il "return verifyLength()" e vedi se la funzione viene eseguita correttamente.

  3. #3
    Funziona!
    Allora ho provato invertendo l'ordine dei return e...
    Funziona!
    Non avrei mai pensato di risolvere invertendo l'ordine... grazie comunque

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,452
    Secondo me è comunque sbagliato, perché nelle 2 funzioni non ritorni né true, né false, mentre dato che nell'onclick richiedi un return, un valore dovrebbe essere ritornato.

    In parole povere, se viene generato l'alert la funzione deve ritornare false, altrimenti deve ritornare true.

  5. #5
    Alla fine dei 4 if c'è "return false;". Non basta?

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,452
    Non ci avevo fatto caso, sorry...

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,452
    Ad ogni modo, se l'ordine delle funzioni nell'evento onclick è ora
    verifyLength();
    verifyNumbers();

    fa questa prova: inserisci un input che non genera alert in verifyLength(), ma che li generi in verifyNumbers(), funziona regolarmente?

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Se invertendo l'ordine hai (o pensi) d'aver risolto c'è qualcosa che non va comunque dato che verifyLength() come l'hai scritto non potrà mai essere soddisfatto
    codice:
    function verifyNumbers(){
    var input1 = document.funzione.inizio.value;
    var input2 = document.funzione.fine.value;
    if(isNaN(input1) && isNaN(input2)){ alert("Prima di continuare devi inserire nei campi un numero di 4 cifre."); return false; }
    }
    
    function verifyLength(){
    var input1 = document.funzione.inizio.value.length;
    var input2 = document.funzione.fine.value.length;
    if(input1 < 4 && input2 < 4){ alert("Prima di continuare devi inserire nei campi un numero di 4 cifre."); return false; }
    }
    Inoltre se le due funzioni sono obbligatorie meglio eseguire onsubmit così
    codice:
    onsubmit="return(verifyNumbers() &&  verifyLength())"
    Concludo dicendo che se non c'è qualche altro motivo le funzioni possono anche essere unite
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  9. #9
    Ho modificato lo script (invece di > ho messo !=) e come consigliato da cavicchiandrea (che ringrazio ) ho unito le due funzioni e adesso il codice è questo
    codice:
    function verify(){
        var value1 = document.funzione.inizio.value;
        var value2 = document.funzione.fine.value;
        var length1 = document.funzione.inizio.length;
        var length2 = document.funzione.fine.length;
        if(isNaN(value1)){ alert("Prima di continuare devi inserire nei campi un numero di 4 cifre."); return false; }
        if(isNaN(value2)){ alert("Prima di continuare devi inserire nei campi un numero di 4 cifre."); return false; }
        if(length1 != 4){ alert("Prima di continuare devi inserire nei campi un numero di 4 cifre."); return false; }
        if(length2 != 4){ alert("Prima di continuare devi inserire nei campi un numero di 4 cifre."); return false; }
    }
    codice:
    <form ... onsubmit="return verify();">
    E funziona a meraviglia!

    @cavicchiandrea
    Prima avevo risolto così, mistero comunque il codice da te fornito non era funzionante.

    @Alhazred
    Se non sbaglio verifyNumbers() funzionava correttamente.


  10. #10
    Orrore
    Se metto 4 cifre da sempre errore... non capisco...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.