Dynamics crm 2011 当按下功能区按钮时,如何知道哪个窗体控件具有焦点?

Dynamics crm 2011 当按下功能区按钮时,如何知道哪个窗体控件具有焦点?,dynamics-crm-2011,dynamics-crm-online,Dynamics Crm 2011,Dynamics Crm Online,有一个自定义JS函数,在窗体上下文中按下功能区按钮时调用该函数。在我的自定义JS函数中,我需要知道在按下功能区按钮之前,哪个表单字段具有焦点。我尝试了两种方法(如下),但都没有成功。有什么方法可以可靠地做到这一点吗 路#1 根据,我可以获得想要作为参数传递给JS的控件。我尝试了使用PrimaryControlId和PrimaryControl参数 对于这两种情况,我都会将一个对象传递给OnCustomBtnFunc(),但它似乎无法让我确定在按下功能区按钮之前哪个窗体控件具有焦点 路#2 我

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

路#1

根据,我可以获得想要作为参数传递给JS的控件。我尝试了使用
PrimaryControlId
PrimaryControl
参数


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

路#2


我打电话。这适用于某些类型的表单字段,但不适用于其他类型的表单字段,例如,如果它是字符串字段,则可以工作,但查找时我会得到null。

您可能不喜欢这个答案,但可以使用JQuery快速获取表单中的每个控件,并为其分配一个OnBlur事件。此事件可以将ID或控件本身指定给全局变量,您将使功能区(从不同范围激发)可以访问该全局变量


人们不喜欢这种方法,因为变量的上下文范围不同,而且它涉及到普通HTML的“不受支持”特性。但是,如果你只问“如何”而不是“我们应该”的问题,那么这是一种简单的“如何”的方法。

是否可以将
onstatuschanged
或任何其名称连接到每个字段,以便当用户单击功能区时,前一个字段会失去焦点并触发事件?然后,您可以存储该元素的id。您还没有尝试过,只是猜测而已。@Konrad尝试过。问题是,当按下功能区按钮时,没有调用“onchange”事件(假设这是您所说的,因为它是表单字段的唯一OOTB事件)!。焦点仍在现场。我可以将焦点更改为任意字段,以便当前字段的onchange事件不会触发。问题是,如果字段验证检测到无效值,我希望功能区按钮代码知道发生了这种情况。我可以试着做它设置旗帜等,但这一切都非常笨拙!对不起,伙计,我只有这些了。如果你已经试过了,我对你就没用了。也许您可以在验证错误或类似的情况下注册控件的id。一定要告诉我你是怎么做的,因为下个月我将自己做一些GUI工作,可能会因为同样的问题而哭泣。另外,要明确的是,您将使用JavaScript=>对其进行编码,这将是一个困难的过程@康拉德哈哈,好的。如果我遇到任何问题,都会更新useful@KonradViltersten对迟迟不答复表示歉意。已经转到其他工作。没有找到一个支持我所需要的解决方案,但能够使它与一些JS乱七八糟的工作。