2013-11-13 6 views
1

У меня есть поле «Дата рождения» и поле возраста в форме CRM. Когда запись сохраняется, возраст рассчитывается, и если возраст меньше 18, возрастное поле должно быть красным.изменить цвет поля на основе значения crm 2011

Когда я сохраняю форму, поле становится красным на секунду, а затем возвращается к нормальному состоянию. Мой веб-ресурс использует событие OnSave формы. Когда я использую код цвета изменения в событии ONChange поля Age, мне нужно дважды сохранить форму, чтобы показать, что она становится красной.

Как избавиться от этого сохранения формы дважды? Вот мой код:

function setAge() 
{ 
    var DOB = Xrm.Page.getAttribute("inmate_dob").getValue(); 
    var Today = Xrm.Page.getAttribute("inmate_bookingdate").getValue(); 
    Today.setHours(0, 0, 0, 0); 
    var db = 0; 
    if(DOB > Today) 
    { 
     alert("Please Enter Genuine BirthDate !!!"); 
     Xrm.Page.getAttribute("inmate_dob").setValue(null); 
    } 
    else 
    { 
     db = Today.getFullYear() - DOB.getFullYear(); 
     var x = Today.getDate() ; 
     var y = DOB.getDate() ; 
     var a = Today.getMonth() + 1; 
     var b = DOB.getMonth() + 1; 
     if((a < b) || (a==b & x < y)) 
      db=db - 1; 
     } 
     var result = Xrm.Page.getAttribute("inmate_age").setValue(db); 
     if (db <18) 
     { 
      document.getElementById("inmate_age").style.backgroundColor = 'red'; 
      document.getElementById("inmate_age_c").style.backgroundColor = 'red'; 
     } 
    } 
} 

Я также попытался использовать последнее условие IF отдельно в событии OnChange поля Age. Это побуждает меня сохранять запись дважды.

+0

Может найти [JQuery плагин часы] (https://github.com/darcyclarke/jQuery-Watch-Plugin) полезно; он должен позволить вам смотреть, где меняется фоновый цвет. Конечно, потребуется jquery – amdixon

+0

Я точно знаю, когда он меняется. – hkhan

+0

если есть? мог бы написать больше кода .. – amdixon

ответ

1

Не могли бы вы рассчитать поле onChange?

например.

Xrm.Page.getAttribute('inmate_age').addOnChange(function() { 
    var theyAre18 = yourFunctionToCalculateIfTheyAre18OrNot(); 
    if (theyAre18) { 
     //make the background white 
    } 
    else { 
     //make the background red 
    } 
}); 

Таким образом, вы можете запустить его один раз при загрузке и изменить только при изменении значения. Когда вы меняете цвет onSave, форма все равно будет перезагружаться, и ваши изменения будут потеряны.

+0

Я вычисляю поле onSave не onChange. Я должен рассчитать Age onSave, поскольку сначала необходимо ввести дату рождения. – hkhan

+0

Пожары OnChange ПОСЛЕ того, как пользователь ввел значение. Поэтому просто примените его к onChange поля DOB. Выполнение этого onSave не будет сохраняться в цвете поля, потому что форма сразу перезагружается. – glosrob

+0

Позвольте мне попробовать. – hkhan

0

Я думаю, что ваша конкретная ошибка связана с тем, что после сохранения форма обновляется, теряя цвет, который вы установили. Вы также должны вычислить его на onLoad.

Basically what happened is: 
OnSave -> Calculate 
Form refresh -> Lose the color 
OnLoad -> you need to re-apply your script 
Смежные вопросы