Dynamics crm 在crm 2013中按出生日期计算年龄字段

Dynamics crm 在crm 2013中按出生日期计算年龄字段,dynamics-crm,crm,Dynamics Crm,Crm,我需要编写一个全局javascript代码来计算“按生日计算年龄”字段,并将函数从不同的javascript文件调用到特定实体。 出于某种原因,我在将实体javascript文件加载到表单后收到错误消息“CalculateAge未定义” 这是我在全局文件中写的内容: CalculateAge:函数(birthd) { if(birthd==null){ 返回;} var today=新日期().getFullYear(); year1=birthd.getFullYear(); 返回(今天-1年

我需要编写一个全局javascript代码来计算“按生日计算年龄”字段,并将函数从不同的javascript文件调用到特定实体。 出于某种原因,我在将实体javascript文件加载到表单后收到错误消息“CalculateAge未定义”

这是我在全局文件中写的内容:

CalculateAge:函数(birthd)
{
if(birthd==null){
返回;}
var today=新日期().getFullYear();
year1=birthd.getFullYear();
返回(今天-1年);
}
这是我在正在加载到表单的实体文件中写入的内容:

函数onLoad(){
var birthDate=Xrm.Page.getAttribute(“el_birthDate”).getValue();
Xrm.Page.getAttribute(“el_age”).setValue(CalculateAge(生日));
}


我是Javascript新手。。YPU可以帮助吗?

< P>你用来计算年龄的JavaScript代码是不正确的,它不考虑月和日。 正确的版本是:

函数计算日期(生日,月日){
如果没有指定日期,考虑今天的日期。
如果(ondate==null){ondate=new Date();}
//如果提供的日期早于生日,则返回0
如果(ondate<生日){返回0;}
var age=ondate.getFullYear()-生日.getFullYear();
如果(birth.getMonth()>ondate.getMonth()| |(birth.getMonth()==ondate.getMonth()&&birth.getDate()>ondate.getDate()){age--}
回归年龄;
}
并可用作:

var birth=Xrm.Page.getAttribute(“new_birth”).getValue();
var年龄=计算年龄(生日);
警觉(年龄);
//年龄在2000年1月1日,JavaScript Date()对象包含从0开始的月份
var testdate=新日期(2000,0,1,0,0,0);
var testage=CalculateAge(生日、测试日期);
警报(测试);
如果没有定义CalculateAge,则可能是表单中没有包含包含函数的webresource。如果您有两个JS web资源(一个包含函数,另一个包含onLoad事件),那么这两个资源都需要包含在表单中

如果您所处的CRM版本存在异步javascript加载问题,最好将CalculateAge函数包含在与onLoad事件相同的文件中,但如果您希望将它们分开,请查看以下博文:


JavaScript函数来自我的博客帖子:

谢谢!我做到了,而且它现在起作用了。。但不幸的是,我现在有另一个问题。。我需要定义年龄字段以不保存插入数据库中的数据,因此我在实体JS文件中编写了这个字段:Xrm.Page.getAttribute(“el_age”).setSubmitMode(“never”)-----问题是,当我第一次保存表单时,几秒钟后年龄字段中的值被删除,当我再次保存表单时,它是确定的。。你能帮忙吗