2012-02-15 21 views
11

Estoy usando el cuadro de diálogo modal jQuery UI, y rellenándolo con algunos campos de formulario. Debido a este error: http://bugs.jqueryui.com/ticket/4731, la primera entrada gana foco cuando se abre el cuadro de diálogo. Para evitar eso, intento difuminar la entrada afectada cuando se abre el cuadro de diálogo.focusout() y trigger. ('Focusout') no causan que la entrada pierda el foco

El problema es que no existe otra funcionalidad que se llama de esta entrada en un .blur(), y yo No quieren disparar esa funcionalidad para esto.

Por lo tanto, estoy tratando de usar .focusout() y .trigger('focusout') para lograr el mismo efecto, pero sin resultados.

Cualquiera de estas acciones:

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

en realidad no causa la entrada a perder el foco, donde el uso de .blur() es exitosa. ¿Me estoy perdiendo algo, o hay otra forma de lograr lo que necesito?

+1

¿Por qué no usar $ ('# inp ut-id '). trigger (' desenfoque ') en su caso? Porque funciona y probablemente sea la forma más fácil de hacerlo ... –

+1

$ ('# input-id'). Trigger ('blur'); es una solución de trabajo. –

Respuesta

3

Mi sugerencia sería establecer el foco en algún otro elemento en el cuadro de diálogo cuando se abre en lugar de configurar el cuadro de texto para desenfocar. Esto debería superar su problema.

Espero que esto ayude !!

+4

¿Qué pasa si solo hay un elemento? – rakslice

4

he utilizado esto como una solución:

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

Si te apetece un javascript rápida truco que puede utilizar:

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

+0

Alguien por favor explique la magia. :/ –

+1

El selector ': focus' encuentra el elemento que está actualmente enfocado y luego blur quita el foco del elemento, llamando así a la función' focusout' –

0

He utilizado este sin necesidad de ejecutar javascript en el controlador de selenio:

field.send_keys :tab 
Cuestiones relacionadas