我有一个包含两个部分的表单,这两个部分都包含一个“需要业务”的特定字段。在我当前的场景中,这些部分中的第一部分是隐藏的,而第二部分是可见的。 (基本上,两者中哪一个是可见的是在JScript中设置并取决于下拉列表的值。)
问题在于,如果用户没有为必填字段输入值然后点击保存,则表单会尝试在两次出现的第一次(即不可见的那次)中对其进行验证。当它发现用户没有填写这个值时,它会将隐藏的部分带入视图,尽管事实上相同的违规字段已经在表格中进一步查看。
有什么方法可以阻止它这样做,或以其他方式解决我的问题?
修改
好的,从下面的答案来看,我想也许我没有说清楚这种情况。我不认为将字段设置为非强制字段,或者使用令牌值填充字段,这样做就可以了,因为如果用户没有填写字段,我确实希望验证强制状态。
我遇到的问题是,在验证它之后,它向用户显示已隐藏的字段的版本,而不是已经可见的字段。
据我所知,简单的API,无论是否将字段设置为强制,均适用于表单上任何字段的出现,而不是特定的字段。
答案 0 :(得分:5)
编辑:好的,这不是很好,但应该有用。
您可以使用
获取值集合var bothControls = Xrm.Page.getAttribute('transactioncurrencyid').controls
并使用
bothControls.get(1)
为您提供第二个(基于零的索引,自然),以便您可以将其禁用
bothControls.get(1).setDisabled(true)
这意味着将跳过验证
答案 1 :(得分:1)
您可以更改要求值:
Xrm.Page.getAttribute("FieldName").setRequiredLevel("none");
答案 2 :(得分:1)
您可以使用此致电Xrm.Page.getAttribute("field_tonotbe_required").setRequiredLevel("none");
来设置不需要的字段
但由于该字段在表单上两次,我不确定Javscript SDK是否会使所有字段不需要,或者只是第一个字段,因此您可能必须从该部分遍历层次结构以查找字段然后调用setRequiredLevel
关于您希望更改的确切字段。
答案 3 :(得分:0)
您是否考虑使用将在更改时触发的脚本并将输入的值从可见部分的字段填入隐藏部分的通讯员?
假设两个业务必需字段称为 Hubba 和 Bubba 。将JavaScript代码连接到更改时,将检查 Hubba 是否为空(如果是,则将 Bubba 的内容复制到其中。否则,它将仅复制 Hubba 中的内容是 Bubba 。
我假设这些字段本质上是对应的,因此您可以复制它们之间的信息。
我想到了另外两个选项(不太理想的恕我直言)。第一个是Pedro所说的,通过打开和关闭验证来增强。不确定它是否有效。我只是为了完整性而提到它。
第二种是从Polaris应用流程驱动的UI。真的不确定它是否有效,但理论上它应该。