2014-10-05 3 views
2

Мне нужно написать глобальный код javascript, который вычисляет возраст по полю дня рождения и вызывать функцию из файла javascript с различными объектами. по какой-то причине я получаю сообщение об ошибке «CalculateAge undefined» после того, как я загрузил файл javascript моего объекта в форму.Расчет возраста по дате рождения в crm 2013

Это то, что я пишу в глобальном файле:

CalculateAge: function (birthd) 
{ 
    if (birthd == null) { 
     return;} 
    var today = new Date().getFullYear(); 
    year1 = birthd.getFullYear(); 
    return (today-year1); 
} 

Это то, что я пишу в своем файле сущности, что я загружаются в форму:

function onLoad() { 

     var birthDate = Xrm.Page.getAttribute("el_birth_date").getValue(); 
     Xrm.Page.getAttribute("el_age").setValue(CalculateAge(birthDate)); 

    } 

Я новый в Javascript .. Может ypu, пожалуйста, помогите?

ответ

3

Код в JavaScript, который вы используете для расчета срока, является неправильным, он не учитывает месяцы и дни. правильная версия этого один:

function CalculateAge(birthday, ondate) { 
    // if ondate is not specified consider today's date 
    if (ondate == null) { ondate = new Date(); } 
    // if the supplied date is before the birthday returns 0 
    if (ondate < birthday) { return 0; } 
    var age = ondate.getFullYear() - birthday.getFullYear(); 
    if (birthday.getMonth() > ondate.getMonth() || (birthday.getMonth() == ondate.getMonth() && birthday.getDate() > ondate.getDate())) { age--; } 
    return age; 
} 

и могут быть использованы в качестве:

var birthday = Xrm.Page.getAttribute("new_birthday").getValue(); 
var age = CalculateAge(birthday); 
alert(age); 
// age on 1st January 2000, JavaScript Date() object contains months starting from 0 
var testdate = new Date(2000, 0, 1, 0, 0, 0); 
var testage = CalculateAge(birthday,testdate); 
alert(testage); 

Если вы получаете CalculateAge не определен, вероятно, вы не включили webresource содержащий вашу функцию в виде , Если у вас есть два веб-ресурса JS (один из которых содержит эту функцию, другой, содержащий событие onLoad), оба должны быть включены в форму.

Если вы находитесь в версии CRM, которая имеет проблему асинхронной загрузки javascript, лучше включить функцию CalculateAge в тот же файл, что и событие onLoad, но если вы предпочитаете держать их отдельно, отметьте это сообщение в блоге: Asynchronous loading of JavaScript Web Resources after U12/POLARIS

Функция JavaScript исходит из моего сообщения в блоге: Calculate age in Microsoft Dynamics CRM 2011

+0

Спасибо! я сделал это и его работа сейчас .. но, к сожалению, у меня есть еще одна проблема сейчас. Мне нужно определить возрастное поле, чтобы не сохранять данные, вставленные в БД, поэтому я написал это в сущности JS-файла: Xrm.Page.getAttribute (" el_age ") setSubmitMode (." никогда "); ---- Проблема заключается в том, когда я сохраняю форму в первый раз, когда значение в поле возраста удаляется через несколько секунд, и когда я снова его сохраню, то ОК. Вы можете помочь? - – userS

Смежные вопросы