2016-07-07 5 views
1

JavaScriptをCRM 2011フォームに追加していますが、わかりません。私はラジオボタンである "new_myfield"というフィールドを持っていますが、私はJavaScript関数OnChangeをfalseに設定しようとしています(この例では、問題の中心になるようにこの例を大幅に簡略化しています)CRM 2011 onChangeイベントハンドラがJavaScriptによってフィールドが設定されているときにイベントハンドラが起動しない

。私は次のスクリプトを使用している場合 は、すべては、私は何度も何度もスクリプトを実行することができ、細かいうまくいく、とするたびに、それは偽 に戻ってフィールドを設定します。実際に何が起こっている。もちろん、

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

は、スクリプトですフィールドがfalseに設定されているときに再び が発生し、再びfalseに設定されるため、2回起動しています。私はスクリプトにアラートを入れてこれを確認しました。

しかし、私は実際には、ユーザーが「本当」にフィールドを設定している場合は、このスクリプトを実行したいので、私はこのように変更します。

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

スクリプトが期待通りに一度実行され、にフィールドを設定します'偽'ですが、次にラジオボタンを手動で 'true'に設定すると、スクリプトは実行されません。それは発射もしません。これは、onchangeイベントハンドラが何も起こっていないことを認識していないようです。それは、私が手動でボタン を '偽'に戻して、スクリプトが期待どおりに再度実行されるときだけです。

これは、スクリプトを2回実行する必要があるかのように(最初の例のように)機能します。

これはなにが起こっているのですか?

+0

'alert'ステートメントを' if'の前に追加しようとしましたか?おそらくコードが発砲しているだけで、あなたの状態は「真」と評価されていません。 –

答えて

0

setValueを使用しているときに発生しないイベントは、意図的に意図した動作であるため、fireOnChange()を明示的に呼び出す必要があります。

setValueを使用して属性を更新しても、OnChangeイベントハンドラは実行されません。 OnChangeイベントハンドラを実行するには、setValueに加えてfireOnChangeを使用する必要があります。Source

関連する問題