我正在Microsoft Dynamics CRM中开发。我写了一些javascript代码来自动填充一个带有日期字段年份部分的文本字段。我承认我仍然是javascript开发的新手所以我的代码可能编写得不好。当代码工作并且年份最终填充时,它最初闪烁“1969”一瞬间然后消失。在显示正确的年份之前,我必须按两次保存按钮。我更喜欢1969不会在任何时候显示,并且一旦用户点击保存按钮就能够填充该字段。请指教。谢谢!
var dateString = Xrm.Page.getAttribute('finalizeddate').getValue();
var finalDate = new Date(dateString);
var finalYear = finalDate.getFullYear();
var str = finalYear.toString();
var revisionStatus = Xrm.Page.getAttribute('revisionstatus');
// If status is final, then populate quota year with finalized date year.
// Otherwise, do not set a value
if (revisionStatus.getSelectedOption().value == final) {
Xrm.Page.getAttribute('quotayear').setValue(str);
} else {
Xrm.Page.getAttribute('quotayear').setValue();
}
答案 0 :(得分:0)
詹姆斯伍德在评论中指出
什么是最终?
Final
是JavaScript中的保留字(https://www.w3schools.com/js/js_reserved.asp),因为这是选项集的值应该用引号括起来。
另外,在我的SDK版本中,它表示选项集字段上的getValue()
会返回数字值,而不是文字的标签选项,因此您可能需要检查自定义项以找到final
选项的正确值。
如果有,可以尝试以下代码,看看它是否有效?
var revisionStatus = Xrm.Page.getAttribute('revisionstatus');
var finalOption = '1'; // this is the value of the optionset, not the label
// If status is 'final', then populate quota year with finalized date year.
if (revisionStatus.getSelectedOption().value == finalOption)
{
var finalizedDate = Xrm.Page.getAttribute('finalizeddate').getValue();
var year = new Date(finalizedDate).getFullYear().toString();
Xrm.Page.getAttribute('quotayear').setValue(year);
}
// Otherwise, do not set a value
else
{
Xrm.Page.getAttribute('quotayear').setValue();
}
另外,作为附注,我认为这些不是您的实际架构名称,因为它们没有您的开发人员前缀?