我如何知道按下功能区按钮时哪个窗体控件具有焦点



有一个自定义 JS 函数,当在窗体上下文中按下功能区按钮时,将调用该函数。在我的自定义 JS 函数中,我需要知道在按下功能区按钮之前哪个表单字段具有焦点。我已经尝试了 2 种方法(如下)但没有成功。有没有办法可靠地做到这一点?

方式#1

据此,我可以将我想要的控件作为参数传递给我的 JS。我尝试使用PrimaryControlIdPrimaryControl参数。

<JavaScriptFunction FunctionName="OnCustomBtnFunc" 
                    Library="$webresource:myJSfile.js">
   <CrmParameter Value="PrimaryControlId" />
   <CrmParameter Value="PrimaryControl" />
</JavaScriptFunction>

对于两者,我都会将一个对象传递给 OnCustomBtnFunc(),但它似乎无法让我在按下功能区按钮之前确定哪个表单控件具有焦点。

方式#2

我调用 Xrm.Page.ui.getCurrentControl()。这适用于某些类型的表单字段,但不适用于其他类型,例如,如果它是一个字符串字段,它可以工作,但我在查找时得到 null。

不会喜欢这个答案,但你可以使用JQuery快速抓取窗体中的每个控件,并为其分配一个OnBlur事件。 此事件可以将 ID 或控件本身分配给全局变量,功能区(从不同范围触发)可以访问全局变量。

人们不喜欢这种方法,因为变量的上下文范围不同,并且因为它涉及使用纯HTML的"不支持"功能。 但是,如果您只问"如何"而不是"我们应该"的问题,那么这是"如何"执行此操作的简单方法。

最新更新