如何在Acumatica自定义项目屏幕中正确添加JavaScript代码?
在Acumatica自定义屏幕中正确绑定JavaScript按钮点击事件的方法
问题原因
你之前的写法错误在于直接将执行语句(如alert("test");)或未正确引用的函数调用赋值给按钮事件,导致页面加载时该代码被立即执行,而非绑定为点击触发的回调。Acumatica页面渲染过程中可能会触发两次相关逻辑,因此出现两次弹窗。
正确实现方式
方式一:通过JavaScript控件定义函数,按钮绑定函数引用
- 在屏幕ASPX代码中添加
PXScript控件,定义可复用的JS函数:
<px:PXScript ID="PXScriptTest" runat="server"> <script type="text/javascript"> function triggerTestAlert() { alert("test"); } </script> </px:PXScript>
- 给目标按钮的
ClientSideEvents-Click属性赋值为函数名(注意是字符串形式的函数名,不要加括号调用):
<px:PXButton ID="btnTestClick" runat="server" Text="测试按钮"> <ClientSideEvents Click="triggerTestAlert" /> </px:PXButton>
方式二:直接在按钮事件中使用匿名函数
无需额外JS控件,直接在按钮的点击事件中用匿名函数包裹执行代码,确保仅在点击时触发:
<px:PXButton ID="btnTestDirect" runat="server" Text="测试按钮"> <ClientSideEvents Click="function() { alert('test'); }" /> </px:PXButton>
验证效果
按上述方法设置后,页面加载时不会弹出提示框,仅在点击对应按钮时才会触发alert("test")执行。
内容的提问来源于stack exchange,提问作者Jorge Chávez
相关产品推荐
相关产品推荐

