Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Отображение блока по фокусу, но всё не так просто (https://javascript.ru/forum/dom-window/67895-otobrazhenie-bloka-po-fokusu-no-vsjo-ne-tak-prosto.html)

Дмитрий5421 13.03.2017 19:12

Отображение блока по фокусу, но всё не так просто
 
Суть задачи: в профиле пользователя должна быть возможность разместить на стене запись. Необходимо, чтобы была форма для ввода - поле для ввода, кнопка "Прикрепить" и кнопка "Отправить". Но с одним нюансом, если поле ввода не в фокусе, они должны быть скрыты. Я это реализовал с помощью onfocus.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-post">
  <form>
    <textarea name="text" id="text" class="login-forma" placeholder="Что у Вас нового?" rows="1"></textarea>
    <div class="addpost" id="success">
      <a href="">Прикрепить</a>
      <input type="submit" value="Рассказать" name="add_post" class="btn btn-success" />
    </div>
  </form>
</div>


text.onfocus = function() {
  $("#success").fadeIn(1);
};

text.onblur = function() {
  $("#success").fadeOut(1);
};


Проблема в том, что если нажимаешь на кнопку прикрепить, или отправить, то, очевидно же, текстовое поле теряет фокус и нажатие не срабатывает, а просто скрывает кнопки. Как сделать, чтобы они пропадали лишь при потере фокуса поля + потере фокуса самого блока с кнопками?

рони 13.03.2017 19:51

Дмитрий5421,
$(function() {
$("#text").on("focus",function(event) {
  $("#success").show();
})
$("#text").on("blur",function(event) {
  if($(event.relatedTarget).closest(".addpost").length) return;
  $("#success").hide();
})
});


Часовой пояс GMT +3, время: 17:54.