Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Problema di precedenze

  1. #1

    Problema di precedenze

    Ho un form con 2 campi testo.
    Ad entrambi i cambi testo ho associato un evento onblur che richiama una funzione javascript.
    Questa funzione fa il controllo al volo del dato inserito che deve essere un numero.
    Se il dato inserito non è un numero la funzione disabilita un button del form e ridà il focus al campo con il dato sbagliato.
    Ma se io immetto un dato non numerico e clicco sull'altro campo (blur per il campo col dato sbagliato) la funzione verifica che il dato è errato, disattiva il button e ridà il focus a questo campo.
    Il problema è che dando il focus al campo col dato sbagliato, è un blur per il campo sul quale avevo cliccato (e quindi ora è il campo col focus), in cui il dato è esatto, così viene richiamata la funzione, e poiché il dato è esatto il button viene riattivato.
    Ovviamente invece finché il dato nel primo campo è errato, il button deve essere disattivato.

    Spero di essermi spiegato...

    Come potrei risolvere sta cosa???
    All work and no play makes EricFlat a dull boy

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    667
    Se puoi posta il codice.

    Vediamo cosa si può fare....


    Ciao Ciao David :di56: :di56:

  3. #3
    Originariamente inviato da mrcanoa
    Se puoi posta il codice.

    Vediamo cosa si può fare....

    Ciao Ciao David :di56: :di56:
    È un po' un casino...
    Quello che ho scritto è un esempio di quello che in realtà ho, ma il funzionamento è uguale.
    Almeno hai capito il problema?
    Se si, hai idea di come aggirarlo??
    All work and no play makes EricFlat a dull boy

  4. #4
    Nessuna idea???



















    All work and no play makes EricFlat a dull boy

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ho capito il problema, ma la soluzione a spiegarla e` complessa, a fare un esempio un po' piu` semplice, ecco perche` mrcanoa ti ha chiesto il sorgente: lavorare sulla tua pagina e` piu` semplice.

    Potresti usare due variabili semaforo (o un vettore con due elementi), che vengono messe a true/false indipendendemente dalla funzione: il bottone viene abilitato solo se sono tutte due true.
    Non so se mi sono spiegato a sufficienza.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  6. #6
    Originariamente inviato da Mich_
    Potresti usare due variabili semaforo (o un vettore con due elementi), che vengono messe a true/false indipendendemente dalla funzione: il bottone viene abilitato solo se sono tutte due true.
    Non so se mi sono spiegato a sufficienza.
    Avevo pensato anche io a qualcosa tipo semaforo, però ripeto, quello che ho scritto nel primo post è solo un esempio semplificativo di quello che dovrei fare.
    In realtà potrei ritrovarmi un form con oltre 200 campi input di testo!!!
    E li son c###i...
    All work and no play makes EricFlat a dull boy

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Allora ti serve proprio un vettore semaforo:
    Il semaforo sara` un vettore di booleani: true in ogni elemento significa che il bottone verra` abilitato, false in un solo elemento non permette l'abilitazione.

    Ecco come leggerlo.
    var abil = true;
    for(var i=0; i<semaf.length; i++) {
    if(semaf[i]) { abil=fase; break; }
    }
    if(abil) {
    ... abilita il bottone ...
    }

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8
    Originariamente inviato da Mich_
    Allora ti serve proprio un vettore semaforo:
    Il semaforo sara` un vettore di booleani: true in ogni elemento significa che il bottone verra` abilitato, false in un solo elemento non permette l'abilitazione.

    Ecco come leggerlo.
    var abil = true;
    for(var i=0; i<semaf.length; i++) {
    if(semaf[i]) { abil=fase; break; }
    }
    if(abil) {
    ... abilita il bottone ...
    }

    Ciao
    Michele
    Eh, dovrei scorrere tutto l'array dei campi input... con tanti campi rallenta un casino!
    All work and no play makes EricFlat a dull boy

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    No, devi scorrere solo l'array dei tag semaforo (come nell'esempio scritto sopra). In un computer normale dovrebbe essere inferiore al decimo di secondo.

    Ad ogni onblur (oppure onchange) dei singoli campi fai il controllo e setti o resetti il semaforo corrispondente.

    Se mi dici come sono i nomi dei campi (immagino un nome seguito da un numero), ti scrivo la funzione per settare il semaforo corrispondente.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  10. #10
    Originariamente inviato da Mich_
    No, devi scorrere solo l'array dei tag semaforo (come nell'esempio scritto sopra). In un computer normale dovrebbe essere inferiore al decimo di secondo.

    Ad ogni onblur (oppure onchange) dei singoli campi fai il controllo e setti o resetti il semaforo corrispondente.

    Se mi dici come sono i nomi dei campi (immagino un nome seguito da un numero), ti scrivo la funzione per settare il semaforo corrispondente.

    Ciao
    Michele
    Grazie per i suggerimenti, come già detto anche io avevo pensato a una soluzione del genere però mi sembrava un po' troppo macchinosa... e infatti, stanotte m'è venuta un'idea ( eh già, io le idee le partorisco mentre dormo... :master: ).
    In pratica ho risolto con una sola variabile (inizialmente vuota) in cui metto il nome del campo che mi da errore.
    E all'onblur da un campo vado a controllare se il nome di questo campo corrisponde al valore nella variabile.
    Solo in questo caso faccio attivare il button e riazzero il valore di quella variabile...
    Chiaro no?
    :metallica
    All work and no play makes EricFlat a dull boy

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 © 2025 vBulletin Solutions, Inc. All rights reserved.