簡體   English   中英

當JavaScript設置字段時,CRM 2011 onChange事件處理程序不會觸發

[英]CRM 2011 onChange event handler not firing when field has been set by JavaScript

我在CRM 2011表單中添加了一些JavaScript,我看到了我不理解的行為。 (我從根本上簡化了這個例子以解決問題的核心。)

我有一個名為“new_myfield”的字段,它是單選按鈕,我正在觸發一個JavaScript函數OnChange將其設置為false。 如果我使用以下腳本,一切正常,我可以一次又一次地運行腳本,並且每次將字段設置為false時:

var myField = Xrm.Page.getAttribute("new_myfield");
myField.setValue(false);

當然,實際發生的是腳本觸發兩次,因為當字段設置為false時,這會再次觸發腳本,再次將其設置為false。 我已經通過在腳本中添加警報來驗證這一點。

但實際上我只想在用戶將字段設置為“true”時運行此腳本,因此我將其更改為:

var myField = Xrm.Page.getAttribute("new_myfield");
if (myField.getValue() == true) {
    myField.setValue(false);
}

腳本按預期運行一次並將字段設置為“false”,但是下次手動將單選按鈕設置為“true”時,腳本不會運行。 它甚至沒有開火。 這就像onchange事件處理程序沒有發現任何事情。 只有當我然后手動將按鈕設置回'false'時,腳本才會按預期再次運行。

就好像腳本需要運行兩次(如第一個示例中)才能使其工作。

任何想法為什么會發生這種情況?

使用setValue時未觸發的Onchange事件是設計的預期行為,您需要顯式調用fireOnChange()

使用setValue更新屬性不會導致OnChange事件處理程序運行。 如果要運行OnChange事件處理程序,除了setValue之外,還必須使用fireOnChange。 資源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM