4

我有一个包含两个部分的表单,这两个部分都包含一个“业务所需”的特定字段。在我目前的情况下,这些部分中的第一个是隐藏的,而第二个是可见的。(基本上,两者中哪一个可见是在 JScript 中设置的,并且取决于下拉列表的值)。

问题是,如果用户没有为必填字段输入值,然后点击保存,表单会尝试在两次出现的第一次(即不可见的一次)上验证它。当它发现用户没有填写此值时,它会将隐藏部分显示在视图中,尽管事实上相同的违规字段已经在表单的下方显示。

有什么办法可以阻止它这样做,或者以另一种方式解决我的问题?

编辑:

好的,从下面的答案中,我想也许我没有把情况说得足够清楚。我不认为将字段设置为非强制性或用令牌值填充它会起作用,因为如果用户没有填写该字段,我确实希望验证强制性状态。

我遇到的问题是,在验证了它之后,它向用户显示了已隐藏的字段版本,而不是已经可见的字段版本。

描绘场景的图像。 验证表单后,隐藏部分(显示为红色边框)出现,因为

据我所知,将字段设置为必填或不设置的简单 API 同样适用于表单上该字段的任何出现,而不是一个特定的。

4

4 回答 4

5

编辑:好的,这不是很漂亮,但应该可以。

您可以使用获取值的集合

var bothControls = Xrm.Page.getAttribute('transactioncurrencyid').controls

并使用

bothControls.get(1)

为您提供第二个(基于零的索引,natch),以便您可以将其禁用

bothControls.get(1).setDisabled(true)

这意味着将跳过验证

于 2013-02-06T14:54:57.980 回答
1

您可以更改要求值:

Xrm.Page.getAttribute("FieldName").setRequiredLevel("none");
于 2013-02-06T14:56:24.737 回答
1

您可以使用此调用使字段不需要Xrm.Page.getAttribute("field_tonotbe_required").setRequiredLevel("none"); 但由于该字段在表单上出现两次,我不确定 Javscript SDK 是否会使所有字段都不需要,或者只是第一个,所以您可能需要遍历层次结构从该部分中找到该字段,然后调用setRequiredLevel您想要更改的确切字段。

于 2013-02-06T14:57:54.010 回答
0

您是否考虑过使用一个脚本,该脚本会在更改时触发并将可见部分字段中输入的值填充到隐藏部分的对应项中?

假设两个业务必填字段分别称为HubbaBubba。将 JavaScript 代码连接到更改时将检查Hubba是否为空(如果是,请将Bubba的内容复制到其中。否则,它只会将Hubba中的内容复制到Bubba中。

我假设这些字段在性质上是对应的,因此您可以在它们之间复制信息。

我想到了另外两个选择(不太理想的恕我直言)。第一个是 Pedro 所说的,通过打开和关闭验证来增强。不确定它是否会起作用。我只是为了完整起见而提到它。

第二个是应用 Polaris 的流程驱动 UI。真的不确定它是否有效,但理论上应该。

于 2013-02-06T17:54:18.363 回答