我对CRM开发很新,我尝试自定义帐户表单以大写onChange中的任何文本字段。我目前正在使用我在网上找到的这个功能:
function UpperCaseField(fieldName)
{
var value = Xrm.Page.getAttribute(fieldName).getValue();
if (value != null)
{
Xrm.page,getAttribute(fieldName).setValue(value.toUpperCase());
}
}
但是,当我更改测试帐户中的值时,它告诉我不支持方法getValue()。我发现的一切都告诉我使用getValue()。我不知所措。
任何帮助将不胜感激。 感谢
答案 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());
另请提供截图,说明您如何使用/注册此处理程序。