2012-02-15 13 views
11

Sto utilizzando la finestra di dialogo modale dell'interfaccia utente jQuery e la compilazione con alcuni campi modulo. A causa di questo errore: http://bugs.jqueryui.com/ticket/4731, il primo input acquisisce il focus quando si apre la finestra di dialogo. Per ovviare a questo, sto cercando di sfocare l'input interessato quando viene aperta la finestra di dialogo.focusout() e trigger ('focusout') non causano input per perdere lo stato attivo

Il problema è che esiste un'altra funzionalità che è chiamata per questo input su un .blur() e I non desidera attivare tale funzionalità per questo.

Quindi, sto cercando di utilizzare .focusout() e .trigger('focusout') per ottenere lo stesso effetto, ma senza risultati.

Facendo uno di questi:

$('#input-id').focusout(); 
$('#input-id').trigger('focusout'); 

realmente non causa l'ingresso a perdere la concentrazione, in cui l'utilizzo .blur() è successo. Mi manca qualcosa o c'è un altro modo per realizzare ciò di cui ho bisogno?

+1

Perché non dovresti usare $ ('# inp ut-id '). trigger (' blur ') nel tuo caso? Perché funziona e probabilmente sarebbe il modo più semplice per farlo ... –

+1

$ ('# input-id'). Trigger ('sfocatura'); è una soluzione funzionante. –

risposta

3

Il mio suggerimento sarebbe quello di impostare la messa a fuoco a qualche altro elemento della finestra di dialogo quando viene aperto invece di impostare testo a confondersi. Questo dovrebbe superare il tuo problema.

Spero che questo aiuti!

+4

Cosa succede se c'è un solo elemento? – rakslice

4

Il messa a fuoco non causa la perdita di messa a fuoco dell'elemento. Invece il focusout viene attivato quando un elemento perde il focus. Scopri http://api.jquery.com/focusout/

4

Ho usato questo come una soluzione alternativa:

$('body').focus(); 
13

Se avete voglia di un rapido javascript incidere è possibile utilizzare:

$(':focus').blur();

+0

Qualcuno per favore spiega la magia. :/ –

+1

Il selettore ': focus' trova l'elemento che è attualmente focalizzato e quindi la sfocatura sposta lo stato attivo sull'elemento, chiamando così la funzione' focusout' –

0

Ho usato questo senza la necessità di eseguire JavaScript nel il driver selenio:

field.send_keys :tab 
Problemi correlati