javascript - CRM 2011 - 联系人表单加载无法在生日字段更改时分配给函数结果

标签 javascript function dynamics-crm-2011 onchange

这是操作出生日期和年龄的代码,如果年龄为空,我会收到字段自定义事件的错误。我似乎无法弄清楚为什么这个 JavaScript 在事件上抛出“无法分配给函数结果”错误:onchange,当此错误出现在表单加载时。如果出生日期字段为空,是否有办法允许代码不执行任何操作?

function birthdate_onchange()
    {
    var age = Xrm.Page.getAttribute("new_age");
    var bDay = Xrm.Page.getAttribute("birthdate");

    if (bDay.getValue() != null)

    {
        var now = new Date();
        var thisYear = now.getFullYear();
        var birthYear = bDay.getValue().getFullYear();

        if((bDay.getValue().getMonth()-now.getMonth())>=0)
        {
            if((bDay.getValue().getMonth()-now.getMonth())==0 && (bDay.getValue().getDate()-now.getDate())<=0)
            {
                age.setValue(thisYear-birthYear);
            }
            else
            {
                age.setValue(thisYear-birthYear-1);
            }
        }
        else
        {
            age.setValue(thisYear-birthYear);
        }

    }
    else
    {
        age.getValue()=null;
    }
    }

我希望得到一些反馈,因为我是 JavaScript 新手,但非常想学习这门语言。可以根据需要提供更多代码或详细说明,因为这只是我们的联系人脚本的一部分。

谢谢

PGM

编辑 1(2014 年 5 月 20 日):

现在年龄/出生日期字段更改已解决,我收到一个“fireonchange”对象不支持属性或方法“fireonchange”。

我有一种感觉它来自这段代码:

//TODO: could use to be upgraded to 2011 syntax
    if (Xrm.Page.getAttribute("srobo_birthdatepre1900").getValue() != null) {
        crmForm.all.srobo_birthdatepre1900.style.display = 'inline';
        crmForm.all.srobo_birthdatepre1900_c.style.display = 'inline';
        crmForm.all.birthdate.style.display = 'none';
        crmForm.all.birthdate_c.style.display = 'none';
    }
    else {
        crmForm.all.birthdate.style.display = 'inline';
    }

    try {

        //Sets Age
        //TODO: test if this works
        Xrm.Page.getAttribute("birthdate").fireOnChange();
    }
    catch (err1) {
        alert("Contact onLoad Error 1" + err1 + " " + err1.description);
    }

    try {



    }
    catch (err2) {
        alert("Contact onLoad Error 2 " + entity + ": " + err2 + " " + err2.description);
    }


} //end on load 

我一直在尝试将 CRM 4.0 JavaScript 版本控制切换到 2011 友好语法,但我的 CRM 中仍然出现错误。谁能告诉我语法方面的问题出在哪里?

我已经切换了这一行: Xrm.Page.getAttribute("生日").fireOnChange();

但仍然不明白为什么它会抛出 fireonchange 错误?

非常感谢您迄今为止提供的所有帮助!我真的很感激!

最佳答案

尝试换线

age.getValue()=null;

age.setValue(null);

关于javascript - CRM 2011 - 联系人表单加载无法在生日字段更改时分配给函数结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23764790/

相关文章:

javascript - 为什么函数调用的结果未定义?

python - 将函数应用于 pandas 列

dynamics-crm - 如何在电子邮件模板中插入记录网址?

PHP 将数组传递给函数

对跟踪的crm电子邮件的电子邮件响应未正确跟踪

javascript - CRM 2011,使用 JavaScript 创建 SalesOrderDetail

javascript - 数据表插件无法自定义动态加载的表

Javascript - 动态改变元素的宽度

javascript - 单击时 jQuery UI slider 会跳跃

javascript - Formik Material UI React - 自动完成 - 不受控制到受控状态