1

我在 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"); 
        }
    }
}

如果表单被标记为完成,并且某个字段是必填字段但包含空值,则会出现一条阻止保存的消息。Dynamics 中的默认消息 - “您必须为 HF1 提供值”

4

2 回答 2

1

我做了一个测试,我可以复制这个问题,如果我设置了两个选项,null并且在我 select 之后NogetValue函数返回null而不是false.

(我只使用了谷歌浏览器,但因为它是受支持的自定义,所以它必须适用于所有浏览器)

如果在您的要求内是可能的(显示No为默认值),我建议通过代码强制执行默认值,如下例所示:

var fieldA1 = Xrm.Page.getAttribute("new_FieldA1");
fieldA1.setRequiredLevel("required");
if (fieldA1.getValue()==null) { fieldA1.setValue(false); }
于 2013-06-17T11:39:02.347 回答
0

必填字段必须有一个值,但一个位字段总是有一个值,所以我实际上希望它被视为包含一个值,即使它看起来不包含一个值。

您能否也发布 x_formcompleted 的 onChange 代码,因为这是触发错误的原因?

你这里有两个字段,我不太明白它们如何交互的逻辑。

当然,您只需要一个,如果勾选则要求他们确认,如果他们改变主意,它会重置。

还可以考虑使用值为 yes / no / null 的选项集(为此有一个内置的全局选项集)。将 Null(“未分配”)设为默认值,并使该字段为必填项(不是通过脚本,只是始终在字段属性中)。

于 2013-06-18T08:58:22.890 回答