如何在MS CRM 2015中的OnChange上大写字段文本值?

时间:2016-03-28 15:15:20

标签: javascript dynamics-crm crm uppercase

我对CRM开发很新,我尝试自定义帐户表单以大写onChange中的任何文本字段。我目前正在使用我在网上找到的这个功能:

function UpperCaseField(fieldName)
{
var value = Xrm.Page.getAttribute(fieldName).getValue();
if (value != null)
{
   Xrm.page,getAttribute(fieldName).setValue(value.toUpperCase());
}
}

但是,当我更改测试帐户中的值时,它告诉我不支持方法getValue()。我发现的一切都告诉我使用getValue()。我不知所措。

任何帮助将不胜感激。 感谢

2 个答案:

答案 0 :(得分:1)

如果您不支持getValue错误,请仔细检查fieldName的值实际上是表单上的字段。最好采用更具防御性的编码,例如:

function UpperCaseField(fieldName)
{
    var attr = Xrm.Page.getAttribute(fieldName);
    if (!attr) { 
        console.log(fieldName + " not found"); 
        return; 
    }

    var value = attr.getValue();
    if (value != null)
    {
       attr.setValue(value.toUpperCase());
    }
}

更新:当您通过表单编辑器将字段连接到JS函数时,CRM会将事件上下文作为第一个参数传递。这是代码在这种情况下的样子:

function UpperCaseField(context)
{
    var fieldName == context.getEventSource().getName();
    var attr = Xrm.Page.getAttribute(fieldName);
    if (!attr) { 
        console.log(fieldName + " not found"); 
        return; 
    }

    var value = attr.getValue();
    if (value != null)
    {
       attr.setValue(value.toUpperCase());
    }
}

以下是有关上下文的更多信息:https://msdn.microsoft.com/en-us/library/gg328130.aspx

答案 1 :(得分:0)

替换行

Xrm.page,getAttribute(fieldName).setValue(value.toUpperCase());

带行

Xrm.Page.getAttribute(fieldName).setValue(value.toUpperCase());

另请提供截图,说明您如何使用/注册此处理程序。