我是CRM开发的新手,我正在尝试自定义帐户表单以将onChange上的任何文本字段都大写。我目前正在使用我在网上找到的此功能:
function UpperCaseField(fieldName)
{
var value = Xrm.Page.getAttribute(fieldName).getValue();
if (value != null)
{
Xrm.page,getAttribute(fieldName).setValue(value.toUpperCase());
}
}
但是,当我更改测试帐户中的值时,它告诉我不支持方法getValue()。我发现的所有内容都告诉我使用getValue()。我无所适从。
任何帮助,将不胜感激。
谢谢
最佳答案
如果出现不支持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