Как предотвратить закрытие выпадающего меню при вызове onclick с помощью js на другую кнопку - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть простое выпадающее меню и кнопка, которая отправляет форму ajax на странице, а функция js вызывает onclick функцию этой кнопки в цикле с некоторой задержкой (каждые 10 секунд onclick метод этой кнопки звонки и, следовательно, некоторая форма отправляется и обновляется).
Теперь проблема заключается в том, что каждый раз, когда нажимают кнопку через выпадающее меню js code, оно закрывается автоматически.
я подозреваю, что вызов по нажатию на эту кнопку крадет фокус выпадающего меню, и поэтому каждый раз, когда код js вызывает его, меню закрывается.
Итак, как я могу предотвратить такое поведение, когда вызывается onclick кнопки? или есть ли лучший способ отправить форму ajax в цикле с задержкой?

UPDATE
Код является частью большого проекта, но для лучшего понимания вы можете рассмотреть что-то вроде этого:

<div class="container">
   <div class="dropdown">
      <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Dropdown Example
   <span class="caret"></span></button>
   <ul class="dropdown-menu">
      <li><a href="#">HTML</a></li>
      <li><a href="#">CSS</a></li>
      <li><a href="#">JavaScript</a></li>
    </ul>
  </div>

<form action="/navigationbar/_submitpush" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#pushwindow" id="form3" method="post">
    <button id="pushsubmitButton" type="submit" style="display:none">realSubmitButton</button>
    <script type="text/javascript">
        function checkingPush() {
            //Doing something
            setTimeout(goingToLoop, 5000);
        }
        function goingToLoop() {
            document.getElementById('pushsubmitButton').click();
        }
        checkingPush();
    </script>
</form>
</div>  

Каждые 5 секунд goingToLoop вызовы, и этот вызов onclick Функция кнопки pushsubmitButton и раскрывающееся меню закрывает

И вы можете смоделировать это с помощью консоли dev браузера (откройте выпадающее меню, выполните document.getElementById('pushsubmitButton').click() в консоли, и меню закроется, даже если кнопка находится вне формы и ничего не делает)

1 Ответ

0 голосов
/ 05 ноября 2018

Проблема в том, что выпадающий список начальной загрузки создается с использованием css и остается открытым :focus. Имитация щелчка по другому элементу также устанавливает :focus для другого элемента.

Вы можете изменить свой раскрывающийся список на JavaScript-решение или смоделировать щелчок по раскрывающейся кнопке после нажатия на кнопку pushsubmitButton.

...