PawelGM
PawelGM

Reputation: 3

CRM 2011 - Contact Form Loads with cannot assign to a function result onchange of a birthdate field

Here is the Code that Manipulates the Birthdate and Age, If age is blank I get an error with the field's customized event. I can't seem to figure out why this JavaScript is throwing the "Cannot assign to a function result" error on a Event: onchange, when this error is appearing on form load. Is there a way to Allow the code to have no action if the Birthdate field is blank?

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;
    }
    }

I would love some feed back on this as I am new to JavaScript, but want to learn this language very much. Can provide more code or elaboration as needed, as this is just a segment of our Script for Contacts.

Thanks,

PGM

Edit 1 (5/20/2014):

Now that the Age/birthdate field changes are resolved, I am getting a 'fireonchange' object doesn't support property or method 'fireonchange'.

I have a feeling it is coming from this segment of code:

//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 

I have been trying to switch the CRM 4.0 JavaScript Versioning to the 2011 friendly syntax, but I am still getting the error in my CRM. Could anyone show me where my problem areas are in terms of Syntax?

I have already switched this line: Xrm.Page.getAttribute("birthdate").fireOnChange();

but still don't see why it would be throwing that fireonchange error?

Thank you so much for all the help so far! I really appreciate it!

Upvotes: 0

Views: 525

Answers (1)

Andrew Butenko
Andrew Butenko

Reputation: 5446

Try to change line

age.getValue()=null;

to

age.setValue(null);

Upvotes: 1

Related Questions