Jquery запустить функцию фокуса без дочерних элементов - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть живой ajax поиск, но когда я нажимаю за пределами панели поиска, ajax поиск не закрывается. Поэтому я использую функцию фокусировки, но когда я нажимаю ajax body, функция фокусировки запускается. Мне нужно запустить функцию фокуса без дочерних элементов.

$("#ajaxsearch").focusout(function(){
      $("#d_ajax_search_results").hide();
    });

Ответы [ 3 ]

1 голос
/ 24 февраля 2020

использование blur событие

$("#ajaxsearch").blur(function(){
     $("#d_ajax_search_results").hide();
});
1 голос
/ 24 февраля 2020

У вас может быть прослушиватель событий, прослушивающий щелчок по элементу <body>, например,

$('body').on('click', function(){
    $("#d_ajax_search_results").hide();
});

еще лучше, если вы откроете панель поиска и добавите класс в тело. Поэтому элемент body будет выглядеть примерно так:

<body class="search-bar-open">

, если пользователь скрывает или закрывает панель поиска, вы снова удаляете класс. вы можете использовать toggle() или addClass() / removeClass(), если вы сделаете это, вы можете изменить

$('body').on('click', function(){

на

$('body.search-bar-open').on('click', function(){

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

0 голосов
/ 24 февраля 2020

Если вы хотите использовать focusout, попробуйте следующий способ:

const input = document.getElementById('ajaxsearch');

input.addEventListener('focusin', (e) => {
  console.log('focusin');
});

input.addEventListener('focusout', (e) => {
  console.log('focusout');
});
<input type="text" id="ajaxsearch" />

Альтернативный путь focus() / blur() в jQ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...