Можно ли сделать два вызова метода .click в JavaScript - PullRequest
0 голосов
/ 12 мая 2009

У меня есть следующий код JavaScript:

function ClickButtons() {
   document.getElementById('Button1').click();
   document.getElementById('Button2').click();
}

только кнопка2, кажется, нажата. Если я переверну порядок операторов, то, похоже, будет работать только Button1 (который потом будет называться 2nd).

К вашему сведению (не думаю, что это влияет на эту проблему, здесь для получения дополнительной информации): при щелчках по кнопке выполняется обновление страницы ajax / частично (они вызывают службы данных и заполняют данные на странице)

РЕДАКТИРОВАТЬ: решение setTimeout работает, но ставит нижнюю границу производительности. Я немного больше посмотрел, и эти две кнопки - кнопки asp.net и находятся внутри панелей обновления. Если я последовательно нажимаю на них, они работают нормально, но если я щелкаю один, а затем быстро нажимаю второй (до того, как первый завершится), то второй будет работать, а первый потерпит неудачу. Это похоже на проблему с панелями обновления и asp.net? Могу ли я что-нибудь сделать на этом фронте, чтобы включить вышеуказанный javascript и избежать опции setTimeout?

Ответы [ 3 ]

1 голос
/ 12 мая 2009

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

function clickButton() {
 document.getElementById('#button1').click();
 setTimeout(button2, 300);
}

function button2() {
 document.getElementById('#button2').click();
}
1 голос
/ 12 мая 2009

Как насчет использования IE fireEvent ()?

function ClickButtons() {
  document.getElementById("Button1").fireEvent("onclick");
  document.getElementById("Button2").fireEvent("onclick");
}

Рабочий пример (протестирован в IE6):

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Click Test</title>
  </head>

  <body>
    <button id="Button1" onclick="alert('Button1 Clicked');">Click 1</button>
    <button id="Button2" onclick="alert('Button2 Clicked');">Click 2/button>
    <script type="text/javascript">
      document.getElementById("Button1").fireEvent("onclick");
      document.getElementById("Button2").fireEvent("onclick");
    </script>
  </body>
</html>

Поскольку вы используете click(), насколько мне известно, это зависит от IE, так же и этот ответ. События запускаются по-разному в разных браузерах, но не должно быть слишком сложно создавать оболочки и скрывать разницу.

0 голосов
/ 12 мая 2009

Они оба должны запустить событие щелчка. Что произойдет, если вы удалите свои ajax-запросы и другие тяжелые действия и просто поместите оповещение или console.log в каждом слушателе событий. Ох, а как ты слушаешь события?

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