Два события на одном клике - PullRequest
0 голосов
/ 23 марта 2009

я сталкиваюсь с этой проблемой:

<p class="pushButton">
  <a href="javascript:return;"
      onclick="SetOkCodeButton('=SC_ORDER', 'BBPForm', '', '',''); 
      return false;" name="Order" class="pushButton" 
      title="Orders your shopping cart. This completes the operation "
      onmouseover="status=' ';return true;"  onmouseout="status=' ';">
      &nbsp;Order&nbsp;
  </a>
</p>

<p class="pushButton">
  <a href="javascript:return;" 
      onclick="SetOkCodeButton('=SC_REFRESH', 'BBPForm', '', '',''); 
      return false;" name="Refresh" class="pushButton" 
      title="Updates all details according to your changes. "
      onmouseover="status=' ';return true;"  onmouseout="status=' ';">
      &nbsp;Refresh&nbsp;
   </a>
</p>

Мне нужно изменить функциональность кнопки ORDER. Он должен запускать функцию REFRESH (генерирующую событие SC_REFRESH) непосредственно перед генерацией события SC_ORDER.

Это означает, что мне нужно вызвать два события одним нажатием кнопки ORDER - сначала REFRESH, а затем ORDER. С 2-х секундным перерывом между двумя событиями. Функциональность REFRESH не изменится.

Ответы [ 3 ]

2 голосов
/ 23 марта 2009

A). В чем причина 2-секундной задержки? Это крайне подозрительно ...

В). Любой данный метод должен достичь ровно одной цели. Создание различных функций для REFRESH и ORDER в методе подсказывает мне, что у вас действительно есть два метода, которые должны быть разбиты на два (которые, возможно, оба вызывают общую третью функцию), но опять же я изо всех сил пытаюсь представить, почему вы захотите обновите форму до публикации.

С). Если вам это действительно нужно, вы можете ввести таймер с setTimeout , предпочтительно в сам новый разделенный метод, но если вы продолжите с существующей реализацией, то, я думаю, в самом атрибуте onclick, хотя теперь он становится грязным (э ). Вы бы написали что-то вроде этого:

onclick="SetOkCodeButton('=SC_REFRESH', 'BBPForm', '', '',''); setTimeout(function(){SetOkCodeButton('=SC_ORDER', 'BBPForm', '', '','');},2000);"

Обратите внимание, что setTimeout асинхронный - если вам нужен реальный метод wait (), вам нужно написать его самостоятельно (а это дорогой процессор), но они дорогие, и опять же, я сомневаюсь, что вам это действительно нужно.

D). Возвращение false также глубоко подозрительно ...

E). Точно так же, как с указателями мыши и за кадром, этот автоматически сгенерированный код?

1 голос
/ 23 марта 2009

По какой причине это не сработает?

<p class="pushButton">
  <a href="javascript:return;" 
      onclick="SetOkCodeButton('=SC_REFRESH', 'BBPForm', '', '','');SetOkCodeButton('=SC_ORDER', 'BBPForm', '', '','');
      return false;" name="Refresh" class="pushButton" 
      title="Updates all details according to your changes. "
      onmouseover="status=' ';return true;"  onmouseout="status=' ';">
       Refresh 
   </a>
</p>

Если эти функции синхронны, все должно быть в порядке, если они асинхронные, вам, вероятно, потребуется обратный вызов.

0 голосов
/ 23 марта 2009

Я только что узнал, что код, который я перечислил здесь, генерируется этим шаблоном из SAP. Я новичок в этом. :-) Кто-нибудь может увидеть шанс вызвать 2 события (SC_REFRESH и SC_ORDER) вместо одного (SC_ORDER)?

TR() TD()

BBPVSpace() BBPButtonBegin()

if (BTN_SC_ORDER.exists) if (BTN_SC_ORDER.disabled) BBPDisabledButton(BTN_SC_ORDER.label) BBPButtonSpace() else BBPButton(BTN_SC_ORDER.OKCODE,BTN_SC_ORDER.label, tooltip=#BUTTON_ORDER) BBPButtonSpace() end end

if (BTN_SC_REFRESH.exists) if (BTN_SC_REFRESH.disabled) BBPDisabledButton(BTN_SC_REFRESH.label) BBPButtonSpace() else BBPButton(BTN_SC_REFRESH.OKCODE,BTN_SC_REFRESH.label,tooltip=#BUTTON_ACTUAL) BBPButtonSpace() end end

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