2011-05-11 14 views
8

私は簡単なチェックボックスがあります(私はマウスのクリックだけからチェックfireeventたい)fireeventチェックせずにチェックボックスをチェックする方法変更イベントを発生させずにチェックボックスをチェックするにはどうすればよいですか?

r = new Ext.form.Checkbox({ 
    listeners: { 
     check: function(checkbox, checked) { 
     } 
    } 
} 

r.setValue(true); 

を? (setValueは機能しません)。

答えて

27

イベントを中断してから、値を設定してからイベントを再開する必要があります。例:

myCheckBox.suspendEvents(false); // Stop all events. 
           //Be careful with it. Dont forget resume events! 
myCheckBox.setValue(!myCheckBox.getValue()); // invert value 
myCheckBox.resumeEvents(); // resume events 
1

r.checked = trueを設定するだけでは機能しません。

1

r.checked = trueを設定するだけでは機能しません。

チェックされた属性を設定すると、初期制御値を割り当てるためのレンダリングされていないコントロールにのみ影響します。レンダリング後、これを使用して値を変更することはできません。

サスペンド/レジュームイベントは、通知を送信せずに制御値を変更することをお勧めします。

また、あなたはDOM要素にimmediallyチェック状態を置くことができます。

item.el.dom.checked = true;

0

私はすでにグーグルの前に受け入れ答えをしようとしていたが、それは4.1.3で動作しませんでした。次のようになりました:

myCheckBox.setRawValue(true); 

これは今後のGoogle社員の役に立ちます。あなたは(たとえば、1trueで、0falseある)コンバータを使用している場合、彼らが働いたままになるので、その後値とresumeEvents()を設定する前にsuspendEvents(false)を呼び出す

+1

"setRawValue"を使用すると、最初のチェック解除イベントは発生しません。出典:http://www.sencha.com/forum/showthread.php?263404-Checkbox-does-not-fire-quot-change-quot-event-on-the-first-change-after-setRawValue(true) &s = 2fb682a6d30f35675c73e5c6230c476d – pvieira

0

setRawValueより一般的なアプローチです。

関連する問題