一个onclick上的两个事件

时间:2009-03-23 11:09:19

标签: javascript-events buttonclick

我正面临这个问题:

<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 个答案:

答案 0 :(得分:2)

A)。延迟2秒的原因是什么?这非常可疑......

B)。任何给定的方法都应该完成一件事。在方法中为REFRESH和ORDER创建不同的功能告诉我你真的有两个方法应该分成两个(可能都叫一个共同的第三个函数),但是我再次想象你为什么要这么做在发布之前刷新表单。

C)。如果你真的需要这个,你可以将setTimeout的计时器最好引入新划分的方法本身,但是如果你继续现有的实现,那么我想在onc​​lick属性本身,虽然现在它变得混乱(呃)。你会写这样的东西:

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

请注意,虽然setTimeout是异步的 - 如果你想要一个真正的wait()方法,你需要自己编写一个(这些处理器价格昂贵),但它们很昂贵,我再次怀疑你真的需要它。 / p>

d)。返回虚假也是非常可疑的......

E)。与mouseout一样,这是自动生成的代码吗?

答案 1 :(得分:1)

任何原因都不起作用?

<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>

如果这些函数是同步的,这应该没问题,如果它们是异步的,你可能需要回调。

答案 2 :(得分:0)

我刚刚发现这里列出的代码是由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