Javascript events 一次单击两个事件

Javascript events 一次单击两个事件,javascript-events,buttonclick,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 t

我面对这个问题:

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

我需要更改
订单
按钮的功能。它应该在生成
SC\u顺序
事件之前触发
刷新
(生成
SC\u刷新
事件)功能

这意味着我需要触发两个事件,其中一个事件只需点击
ORDER
按钮-首先是
REFRESH
,然后是
ORDER
。两个项目之间有2秒的时间间隔。
刷新的功能不会改变。

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

B) 。任何给定的方法都应该实现一件事。在方法中创建不同的刷新和排序功能对我来说意味着你真的有两个方法,应该分成两个(这两个方法可能都调用一个公共的第三个函数),但我还是很难想象为什么你要在发布表单之前刷新表单

C) 。如果您真的需要它,您可以在新划分的方法本身中引入一个计时器,但是如果您继续使用现有的实现,那么我猜是在onclick属性本身中,尽管现在它变得很混乱(er)。你可以这样写:

onclick="SetOkCodeButton('=SC_REFRESH', 'BBPForm', '', '',''); setTimeout(function(){SetOkCodeButton('=SC_ORDER', 'BBPForm', '', '','');},2000);"
请注意,尽管setTimeout是异步的——如果您想要一个真正的wait()方法,您需要自己编写一个(这些方法的处理器成本很高),但它们的成本很高,而且我怀疑您是否真的需要它

D) 。返回错误也是非常可疑的

E) 。同样地,对于鼠标出键和鼠标外键,这是自动生成的代码吗?

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

B) 。任何给定的方法都应该实现一件事。在方法中创建不同的刷新和排序功能对我来说意味着你真的有两个方法,应该分成两个(这两个方法可能都调用一个公共的第三个函数),但我还是很难想象为什么你要在发布表单之前刷新表单

C) 。如果您真的需要它,您可以在新划分的方法本身中引入一个计时器,但是如果您继续使用现有的实现,那么我猜是在onclick属性本身中,尽管现在它变得很混乱(er)。你可以这样写:

onclick="SetOkCodeButton('=SC_REFRESH', 'BBPForm', '', '',''); setTimeout(function(){SetOkCodeButton('=SC_ORDER', 'BBPForm', '', '','');},2000);"
请注意,尽管setTimeout是异步的——如果您想要一个真正的wait()方法,您需要自己编写一个(这些方法的处理器成本很高),但它们的成本很高,而且我怀疑您是否真的需要它

D) 。返回错误也是非常可疑的


E) 。同样地,对于鼠标出键和鼠标外键,这是自动生成的代码吗?

有什么原因不能工作吗

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


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

有什么原因不能工作吗

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


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

我刚刚发现我在这里列出的代码是由SAP的此模板生成的。 我是这方面的新手。:-) 任何人都有可能触发2个事件(SC_刷新和SC_顺序),而不是一个(SC_顺序)

TR()
TD()

BBPVSpace()
BBPButtonBegin()

if(BTN\u SC\u订单存在)
if(BTN\u SC\u ORDER.disabled)
BBPDisabledButton(BTN\u SC\u ORDER.label)
BBPButtonSpace()
else
bbp按钮(BTN\u SC\u ORDER.ok代码、BTN\u SC\u ORDER.label、工具提示=#按钮顺序)
BBPButtonSpace()
end
end

if(BTN\u SC\u REFRESH.exists)
if(BTN\u SC\u REFRESH.disabled)
BBPDisabledButton(BTN\u SC\u REFRESH.label)
BBPButtonSpace()
else
bbp按钮(BTN_SC_REFRESH.ok代码、BTN_SC_REFRESH.label、工具提示=#按钮实际)
BBPButtonSpace()
end

end

我刚刚发现我在这里列出的代码是由SAP的此模板生成的。 我是这方面的新手。:-) 任何人都有可能触发2个事件(SC_刷新和SC_顺序),而不是一个(SC_顺序)

TR()
TD()

BBPVSpace()
BBPButtonBegin()

if(BTN\u SC\u订单存在)
if(BTN\u SC\u ORDER.disabled)
BBPDisabledButton(BTN\u SC\u ORDER.label)
BBPButtonSpace()
else
bbp按钮(BTN\u SC\u ORDER.ok代码、BTN\u SC\u ORDER.label、工具提示=#按钮顺序)
BBPButtonSpace()
end
end

if(BTN\u SC\u REFRESH.exists)
if(BTN\u SC\u REFRESH.disabled)
BBPDisabledButton(BTN\u SC\u REFRESH.label)
BBPButtonSpace()
else
bbp按钮(BTN_SC_REFRESH.ok代码、BTN_SC_REFRESH.label、工具提示=#按钮实际)
BBPButtonSpace()
end

end

返回false;语句取消链接的默认操作(导航到定位点位置)。正因为如此,href=“javascript:return;”属性可以简单地替换为href=“#”。如果将那么多代码放入onclick属性,最好将其分解为脚本块中的一个函数,以便于可读性和维护。onclick不需要返回false,hrefs需要(javascript:void foo()这是一种更安全、更清晰的方法——我完全同意这是一种可怕的代码——见a、B、D和E点:)如果你