2010-06-30 14 views
18

Ho una casella di testo che voglio eseguire alcuni jquery quando la casella di testo perde lo stato attivo, quindi dopo che l'utente ha fatto clic fuori dalla casella di testo.Funzione jQuery quando una casella di testo perde lo stato attivo

Ho provato a fare questo

$("#textbox").focusout(function() { 
    alert("hello"); 

}); 

ma ottengo un errore che dice oggetto non supporta questa proprietà o metodo.

Come posso fare questo allora?

+0

Hai detto che nei commenti è 1.4.2, sei * assolutamente * sicuro? È possibile che tu includa una versione precedente di jQuery, possibilmente più in basso nella pagina? –

+0

Hai importato jQuery nella pagina? –

+0

sì sono sicuro di averlo importato solo una volta sulla pagina principale e nessun altro in cui non ho una versione precedente sul mio sistema. sì jQuery viene importato nella pagina. altre funzioni come button() sono in uso e funzionano bene. – twal

risposta

17

focusout è stato aggiunto in v1.4. Tre pensieri:

  1. Potresti utilizzare una versione precedente di jQuery?
  2. Il tuo campo ha davvero l'ID textbox?
  3. Stai anche utilizzando Prototype o MooTools (o qualsiasi altra cosa che potrebbe occupare lo $)? In tal caso, utilizzare la modalità noConflict di jQuery e utilizzare jQuery anziché $.

Oltre a ciò, dovrebbe (funziona) funzionare.

Ecco un esempio (usando un avviso come avete fatto): http://jsfiddle.net/QzmZp/1/
e un altro che non utilizzano un avviso (perché fuori di testa IE7 out): http://jsfiddle.net/QzmZp/2/
Qualcuno in precedenza chiesto di versioni del browser, ho provato quanto sopra con Chrome 5, IE6, IE7 e FF3.6; tutto bene.

Ho eseguito entrambi uno input e uno textarea perché non ero sicuro di quale stavi utilizzando.

+0

ho appena controllato. è 1.4.2 – twal

+0

ricontrollato il mio campo ha un id di textbox che ho copiato e incollato al selettore solo per essere sicuro. e ancora lo stesso. È che lo fa sia su IE che sul browser FF e non lo fa. – twal

+0

@twal - Hai un'altra libreria sulla pagina, prototipo per esempio? –

9
jQuery("#textbox").blur(function() { 
    alert("hello"); 
}); 

blur è l'evento che viene generato quando un elemento perde lo stato attivo. Controlla jQuery.blur.

EDIT

Non sono sicuro se questo è ciò che si vuole, ma se si sta veramente cercando di utilizzare focusout check-out T. J. Crowder's solution. Tuttavia, per la tua situazione, l'evento blur potrebbe essere necessario in quanto desideri rilevare la perdita di messa a fuoco sulla casella di testo stessa. focusout si attiva quando un elemento o qualsiasi elemento all'interno di perde tale elemento.

+0

la sfocatura ha funzionato per me grazie! Non sono sicuro del motivo per cui l'errore si focalizza, ma funzionerà. Grazie !!!! – twal

+0

'focusout' si attiva anche per la casella di testo, tuttavia * anche * bolle. –

5
$("#idOfTextField").blur(function(){ 

    //your code 

}); 
+2

Provare a fornire una risposta migliore. Se stai rispondendo come già fatto – Sami

1
$(document).ready(function() { 
     ////////////////////////ALL textbox to upper 
     $("input[type=text]").blur(function() { 
      $(this).val($(this).val().toUpperCase()); 
     }); 
    }); 

per convertire tutte le casella di testo al superiore quando perdono messa a fuoco.

Problemi correlati