2012-05-17 5 views
10

Нужно как-то потерять фокус на <select> после того, как был выбран <option>.jQuery: потерять фокус на элементе

http://jsfiddle.net/MnAdN/

без удаления этой проверки фокусировки.

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

Панель инструментов должна быть видимой, когда пользователь делает выбор, и должен быть скрыт, когда выбор сделан.

Спасибо.

+0

Как насчет того, чтобы сосредоточиться на другом элементе, не имеющем фокусных событий? –

+0

Ваша скрипка содержит следующий селектор, который не существует: '$ ('# adm1n-toolbar-content select')' – Blazemonger

+0

Yep .. Но он существует в моем исходном скрипте. =)) Я должен пить меньше ... (или больше) ... =) –

ответ

16

Вы можете использовать метод blur(), как это:

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

Это не работает. http://jsfiddle.net/MnAdN/2/ –

+0

Вы называете это после того, как что-то было выбрано из вашего меню? Позвольте мне посмотреть, смогу ли я взломать что-то подобное для вас. –

+0

Я думал .change() - это то, что называется, когда выбор сделан? –

4

Trigger событие размытия:

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

Просто заставить фокус с панели инструментов:

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

Работа с компьютером 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'); 
}); 

Смежные вопросы