我在Dynamics CRM 2011表单上有一系列不同的字段。我正在使用javascript进行各种检查。其中之一是将特定字段设置为“必需”以防止用户保存表单,直到为该字段分配值。 (强制要求)
Xrm.Page.data.entity.attributes.get("new_FieldA1").setRequiredLevel("required");
但是,我的一些字段是单选按钮。上面的代码似乎不适用于这些。无论如何,我认为“否”的选择是“否”。这意味着如果选择“否”,我仍然会收到一条消息“你必须为FieldA1提供一个值”。
任何人都可以建议一个工作,所以允许“不”吗? 感谢。
要检查必填字段,(如果表单上填写了特定字段),用户选择一个单选按钮作为表单底部的最后一个选项(“将此表单标记为完成?”)当选择是时,以下功能执行一些基本检查:
function FormSaveAlert()
{
if (Xrm.Page.getAttribute("new_formcompleted").getValue() == true)
{
if (confirm("Are you sure this form is complete? \n Once saved, this form cannot be modified again.") == false)
{
Xrm.Page.getAttribute("new_formcompleted").setValue(false);
}
else
{
var HF1 = Xrm.Page.getAttribute("new_hf1field");
HF1.setRequiredLevel("required");
if (HF1.getValue()==null) {HF1.setValue(false);}
//Xrm.Page.data.entity.attributes.get("otherfield").setRequiredLevel("required");
}
}
}
如果表单标记为完成,并且需要某个字段但包含null,则会显示一条消息,阻止保存。动态中的默认消息 - “您必须为HF1提供值”
答案 0 :(得分:1)
我做了一个测试,我可以复制这个问题,如果我设置两个选项null
,在我选择No
后,getValue
函数返回null
而不是false
。
(我只使用谷歌浏览器,但由于支持自定义,它必须适用于所有浏览器)
如果您的要求符合要求(显示No
为默认值),我建议按代码强制执行默认值,如下例所示:
var fieldA1 = Xrm.Page.getAttribute("new_FieldA1");
fieldA1.setRequiredLevel("required");
if (fieldA1.getValue()==null) { fieldA1.setValue(false); }
答案 1 :(得分:0)
必填字段必须有一个值,但是一个位字段总是有一个值,所以我实际上希望它被视为包含一个值,即使它看起来不是。
你也可以发布x_formcompleted的onChange代码,因为那是触发错误的原因吗?
这里有两个字段,我看不出它们如何交互的逻辑。
当然你只需要一个,如果勾选要求他们确认,如果他们改变了主意,它就会被重置。
还要考虑使用值为yes / no / null的选项集(为此设置了内置的全局选项)。使Null(“未分配”)成为默认值,并使字段成为必需字段(不是通过脚本,只是始终在字段属性中)。