2

我正在開發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(); 
} 
+2

什麼是'final'? –

+0

這應該工作,如果你運行它'OnSave' – Alex

+1

是「1969」該字段的默認值? – DenLun

回答

0

正如詹姆斯木在他的評論

什麼是最終的注意?

Final是JavaScript中的保留字(https://www.w3schools.com/js/js_reserved.asp),因爲這是選項集的值應該用引號括起來。

此外,在SDK我的版本,它說,getValue()上optionset場返回數字沒有標籤的選項文本,所以你可能需要檢查你的定製找到正確的值爲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(); 
} 

此外,作爲一個側面說明,我認爲這些都不是你的實際架構的名字,因爲他們沒有開發者的前綴?

相關問題