2012-05-17 23 views
10

Necesita perder enfoque de alguna manera en <select> después de que se haya seleccionado <option>.jQuery: perder el foco en el elemento

http://jsfiddle.net/MnAdN/

Sin retirar esta comprobación de enfoque.

if (... !$('#adm1n-toolbar form select').is(':focus')) 

La barra de herramientas debe estar visible mientras el usuario está haciendo la selección, y debe ocultarse cuando se realiza la selección.

Gracias.

+0

¿Qué le parece si pone el foco en otro elemento que no tiene eventos de enfoque? –

+0

Su violín contiene el siguiente selector que no existe: '$ ('# adm1n-toolbar-content select')' – Blazemonger

+0

Sí ... pero existe en mi script original. =)) Debería beber menos ... (o más) ... =) –

Respuesta

16

Usted puede utilizar el método blur(), así:

$("#adm1n-toolbar form select").change(function() { 
    $(this).blur(); 
}); // after something has been selected 
+0

Esto no funciona. http://jsfiddle.net/MnAdN/2/ –

+0

¿Lo está llamando después de haber seleccionado algo de su menú? Déjame ver si puedo azotar algo así para ti. –

+0

Pensé que .change() es algo que se llama cuando se hace la selección? –

4

gatillo un evento de desenfoque:

$('#yourSelect').blur(); 
2

Sólo forzar el foco de la barra de herramientas:

$('#adm1n-toolbar select').trigger('blur'); 

Usando su jsFiddle:

$('#adm1n-toolbar') 
    .mouseenter(function() { 
     var toolbarposition = $(this).position(); 
     if (toolbarposition.top < 0) { 
      $(this).animate({top: '0'}, 300); 
     } 
    }) 
    .mouseleave(function() { 
     var toolbarposition = $(this).position(); 
     if (toolbarposition.top >= 0 && !$('#adm1n-toolbar form select').is(':focus')) { 
      $(this).animate({top: '-115'}, 300); 
     } 
    }); 

$('#adm1n-toolbar select').change(function(e) { 
    e.preventDefault(); 
    $(this).trigger('blur'); 
}); 

Cuestiones relacionadas