2012-01-05 22 views
5

Sono confuso su cosa sta succedendo qui ... dovrebbe essere semplice, ma non riesco a capirlo.sfocatura jquery non funziona correttamente?

Sto prepulando un modulo con alcune informazioni che devono essere verificate rispetto al database. Quando il modulo viene caricato, voglio che javascript esegua gli eventi "sfocatura" per le due caselle di input su cui ho bisogno di verificare.

Ecco cosa sta succedendo. Quando il modulo carica tutti i dati visualizzati correttamente, ma l'evento di attivazione ("sfocatura") per gli input "username" e "email" non viene attivato. Tuttavia, se posiziono manualmente il cursore su ciascuno degli input e poi premo il tasto tab, o clicco fuori dagli schemi, l'evento "blur" viene attivato.

Ho bisogno che si attivi anche quando la pagina viene caricata per avvisare l'utente se i dati pre-compilati sono in conflitto con i dati esistenti ... qualsiasi idea di cosa sto facendo male o come farlo funzionare?

Grazie in anticipo.

<script type="text/javascript"> 
    $(document).ready(function(){ 
     //Username 
     $("#username").blur(function(){ 
      $("#usr_available_msg").html("Checking").addClass("error_msg ui-state-error"); 
     }); 

     //email 
     $("#email").blur(function(){ 
      $("#email_available_msg").html("Checking").addClass("error_msg"); 
     }); 

     //Run validation check on page load 
     $("#username").trigger("blur"); 
     $("#email").trigger("blur"); 
    }); 
</script> 
+1

ho messo questo in un jsfiddle e il metodo blur viene attivato al caricamento della pagina proprio come previsto.http: //jsfiddle.net/rawsmell/29JFk/1/. Che cosa esattamente non funziona? – Rondel

risposta

4

Perché non prendere le funzioni di controllo '' fuori della manifestazione sfocatura per gli elementi di nome utente e-mail e trasformarli in proprio nome funzione o funzioni? Quindi chiama la funzione sugli eventi di caricamento e sfocatura della pagina (per questi due elementi). Il tuo codice funziona correttamente da quando la pagina viene caricata stai facendo scattare una sfocatura su qualcosa che non ha mai avuto il focus iniziale.

+0

buona idea ... Sono un idiota ... Ho appena capito di convalidare prima che effettivamente compili il modulo ... mi scuso per aver sprecato il tuo tempo. – Ronedog

1

Questo dovrebbe funzionare come previsto.

Provare il seguente codice in un nuovo file e testarlo ... Se funziona correttamente, il problema è con un altro blocco di codice sulla stessa pagina che causa questo problema.

  • Creare una semplice pagina HTML
  • Aggiungere file di script jQuery per lo
  • Aggiungi un ingresso con ID "testinput"
  • Add seguente script

    $(document).ready(function(){ 
        $("#testInput").blur(function(){ 
         alert(1); 
        }); 
    
        $("#testInput").trigger("blur"); 
    }); 
    
+0

grazie per la risposta. funziona, ho avuto la logica nell'ordine sbagliato ... ho impiegato un po 'di tempo per vedere qualcosa di così semplice. grazie per aver risposto . – Ronedog

Problemi correlati