Visualizzazione dei risultati da 1 a 9 su 9

Discussione: OnChange

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    57

    OnChange

    Salve,
    il mio problema riguarda la funzione onChange.

    Ho scritto una funzione che sull'OnChange di un campo input text controlla la validità del valore inserito e cioè se il valore inserito rientra in set di valori prestabilito.
    Se ciò non accade si ha un alert che avverte l'errore nel valore del campo input.
    Se dopo l'errore l'utente inserisce nuovamente lo stesso valore, che è ancora errrato, l'evento OnChange non si verifica perchè effettivamente il valore non è cambiato (sbagliato era prima e sbagliato è rimasto).

    Ho già provato a porre il valore "" dopo che viene generato l'errore, ma evidentemente non basta a far partire l'OnChange dato che il valore non è stato cambiato manualmente dall'utente!

    Avete qualche suggerimento?


  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    57
    Ripropongo lo stesso problema di ieri!
    Qualcuno può darmi qualche consiglio su come risolverlo?


  3. #3
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Usa anche (o solo) l'evento onblur

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  4. #4

    Re: OnChange

    Originariamente inviato da gembi
    Salve,
    il mio problema riguarda la funzione onChange.

    Ho scritto una funzione che sull'OnChange di un campo input text controlla la validità del valore inserito e cioè se il valore inserito rientra in set di valori prestabilito.
    Se ciò non accade si ha un alert che avverte l'errore nel valore del campo input.
    Se dopo l'errore l'utente inserisce nuovamente lo stesso valore, che è ancora errrato, l'evento OnChange non si verifica perchè effettivamente il valore non è cambiato (sbagliato era prima e sbagliato è rimasto).

    Ho già provato a porre il valore "" dopo che viene generato l'errore, ma evidentemente non basta a far partire l'OnChange dato che il valore non è stato cambiato manualmente dall'utente!

    Avete qualche suggerimento?

    se quello di cui parli tu è un form di inserimento valori da dover successivamente vallidare, puoi mettere la validazione sull'evento onClick() di un bottone e poi se la validazione va a buon fine fare la submit.


    se è questo che ti serve
    Flickr .:. Work In Progress

    Non lasciare la mia mano, ovunque sarai, con chiunque ti accompagnerai. Non dimenticarti di me, ne morirei.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    57
    Per quanto riguarda la soluzione dell'evento OnClick non posso metterla in pratica perchè uso un altro javascript che mi effettua il controllo sui campi del form e mi inibisce ogni altra funzione collegata ai bottoni di submit. Questo js controlla il formato dei valori (solo numeri, valori alfanumerici, niente punti, formato email... etc ... etc... ma non ha una funzione che controlli se il valore di un input text rientra in un set prestabilito di valori.) Questo controllo avevo intenzione di farlo a parte, anche se poi il discorso dell'OnChange mi ha bloccata!

    Per quanto riguarda onBlur, potreste spiegarmi meglio come funziona, ovvero quando si verifica questo evento e quali vantaggi ha rispetto a OnChange? Usando OnBlur non si verificherà il problema che ho riscontrato con OnChange?

    Grazie per le risposte, spero possiate essermi ancora d'aiuto...

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Originariamente inviato da gembi
    Per quanto riguarda la soluzione dell'evento OnClick non posso metterla in pratica perchè uso un altro javascript che mi effettua il controllo sui campi del form e mi inibisce ogni altra funzione collegata ai bottoni di submit. Questo js controlla il formato dei valori (solo numeri, valori alfanumerici, niente punti, formato email... etc ... etc... ma non ha una funzione che controlli se il valore di un input text rientra in un set prestabilito di valori.) Questo controllo avevo intenzione di farlo a parte, anche se poi il discorso dell'OnChange mi ha bloccata!

    Per quanto riguarda onBlur, potreste spiegarmi meglio come funziona, ovvero quando si verifica questo evento e quali vantaggi ha rispetto a OnChange? Usando OnBlur non si verificherà il problema che ho riscontrato con OnChange?

    Grazie per le risposte, spero possiate essermi ancora d'aiuto...
    Puoi implementare onChange cosi direttamente sul campo da controllare:
    codice:
    onChange="if(tuaFunzione){alert('Errore campo');this.value='';this.focus();}
    l'evento onBlur si attiva alla perdita del focus del oggetto
    ed e da utilizzare in abbinamento all' onChange.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    57
    Cosa cambia tra l'uso di OnChange che faccio io e quello proposto da te?

    Io uso OnChange="Javascript:controllo();" e l'alert del messaggio di errore è incluso nella funzione controllo. Il mio problema è che la funzione OnChange non viene richiamata ogni volta che scrivo qualcosa nel campo text, ma ogni volta che cambia il suo valore, per cui se inserisco il primo valore errato, la funzione me lo segnala, se inserisco nuovamente lo stesso valore errato, l'evento OnChange non si verifica e il controllo non viene effettuato!

    Mi hai detto di usare onBlur insieme a OnChange ma non ho visto come nella riga di esempio che hai scritto?

    Potresti chiarirmi meglio come fare? e se effettivamente risolvo il problema in questo modo?


  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Originariamente inviato da gembi
    Cosa cambia tra l'uso di OnChange che faccio io e quello proposto da te?

    Io uso OnChange="Javascript:controllo();" e l'alert del messaggio di errore è incluso nella funzione controllo. Il mio problema è che la funzione OnChange non viene richiamata ogni volta che scrivo qualcosa nel campo text, ma ogni volta che cambia il suo valore, per cui se inserisco il primo valore errato, la funzione me lo segnala, se inserisco nuovamente lo stesso valore errato, l'evento OnChange non si verifica e il controllo non viene effettuato!

    Mi hai detto di usare onBlur insieme a OnChange ma non ho visto come nella riga di esempio che hai scritto?

    Potresti chiarirmi meglio come fare? e se effettivamente risolvo il problema in questo modo?

    Come da te specificato onChange funziona solo quando il campo viene modificato.
    • Al richiamo della funzione con onChange oltre alla verifica del campo aggiungi la cancellazione del valore del campo stesso in modo che un utente debba ridigitare nuovamente un dato
    • Oppure richiami la funzione con onBlur (che sia attiva quando l'oggetto per il fuoco) in questo caso nella funzione quando si presenta l'errore rimanderai il cursore in quel determinato campo.

    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    57
    Come dicevo nel primo messaggio, ho già provato ad annullare il valore del campo dopo che si verifica l'errore, ma forse per il fatto che il valore non viene cambiato manualmente dall'utente, quando si digita per la seconda volta il valore errato l'evento OnChange non si verifica come se l'ultimo valore fosse rimasto quello errato digitato dall'utente.

    Credi che onBlur non si verificherà quando si usa la tastiera al posto del mouse?
    Il mio problema è saltato proprio per l'uso della tastiera!

    E' il caso di richiamare la funzione su tutti e due gli eventi, e se ce ne sono anche degli altri in modo da coprire tutti i casi?

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.