0

条件を満たしたときに選択の変更を元に戻す必要があることを検証するコンボボックスがあります。

状態を検出しましたが、コンボボックスの値とdisplayedValueを変更すると、コンボボックスに関連付けられたonChangeが起動されます。以下は、選択を変更するために使用しているコードです。

dijit.byId('scheduleName').set('value',val,false);
dijit.byId('scheduleName').set('displayedValue',displayVal,false);

また、上記のコードを実行する前にonChangeを空白に設定してから、以下のようにonChangeコードを再アタッチしようとしました。

dojo.connect(dijit.byId('scheduleName'),'onChange','');
dijit.byId('scheduleName').set('value',scheduleNameVal,false);
dijit.byId('scheduleName').set('displayedValue',trim(String(scheduleNameName)),false);
dojo.connect(dijit.byId('scheduleName'),'onChange', "hideGrid");

hiddenGridはjavascript関数です。Dojo1.8を使用しています

4

2 に答える 2

3

のみを設定し、 displayedValueは設定しません

myComboBox.set("value", value, false);

次に、watchコールバックのみが発生し、またはは発生しませdojo/ononChange

このjsFiddleをチェックして、違いを確認してください:http: //jsfiddle.net/phusick/d7ymY/

trim() 注: displayedValueが必要な場合は、カスタムsetterまたはを検討してくださいdojo/aspect::before

于 2012-09-05T17:39:17.240 に答える
1

dojo.disconnect代わりに 使用する必要があります

dojo.connect(dijit.byId('scheduleName'),'onChange','');

例:

var hndl, sched = dijit.byId('scheduleName');
var fnWireOnChange = function(){
  hndl = dojo.connect(sched,'onChange', 'hideGrid');
};

dojo.disconnect(hndl);
sched.set('value',scheduleNameVal,false);
sched.set('displayedValue',trim(String(scheduleNameName)),false);
fnWireOnChange();

補足として、connect/disconnectを支持して非推奨になりましたdojo/on

https://dojotoolkit.org/reference-guide/1.8/dojo/on.html#dojo-on

于 2012-09-05T14:47:21.140 に答える