2

選択ボックスの 1 つで、onChange="..." が指定されています... 選択が変更された後に他のフォーム値を変更したいのです。

ただし...同じページで、有線の場合、値を手動で設定する必要があります..そのため、javascriptを使用して選択コンボックスの値を設定する必要がありますが、この場合、そのonChangeイベントは必要ありません解雇される…

どうやって歩き回れるの???

私が実際に dijit.form.comboBox を使用していることを忘れていました。通常の HTML フォームのコンボ ボックスの場合、問題は発生しません。私だけが dijit コンボ ボックスを使用し、値を他の値に設定しようとすると、dojo が onChange をトリガーします。

4

5 に答える 5

9

Dijit を使用している場合はfalse、set() メソッドの最後に追加のフラグを渡して、ウィジェットが onChange イベントを発生させないようにすることができます。

例えば:

dijit.byId(myComboBox).set("value","Choose an option...",false);
于 2011-06-17T20:52:57.213 に答える
4

http://dojo-toolkit.33424.n3.nabble.com/onchange-event-firing-when-setting-value-of-a-Select-programmatically-td3985692.htmlで Paul Christopher からのこの回答を見つけました。それは完璧に機能しました!

myDigit._lastValueReported = myValue;
myDigit.set('value', myValue);
于 2012-12-06T15:06:48.153 に答える
1

何もする必要はありません。Javascript で値を設定しても、onchange イベント ハンドラは起動されません。

于 2009-07-08T03:31:48.833 に答える
1

一般に、JavaScript で値を設定しても onchange は起動しません。それを起動する奇妙なブラウザを扱っている場合は、onChange ( element.onchange = null) を削除し、値を変更してから、後で追加し直す ( element.onchange = functionname) ことができます。

于 2009-07-08T03:34:46.677 に答える
0

参考までに、この答えは完全には正しくありません。値を設定するだけでは onChange イベントがトリガーされないことは事実ですが、コントロールがフォーカスを失うとすぐに変更が検出され、onChange が発生します。

したがって、onChange を遅らせることは、onChange を防ぐことと実際には同じではありません。これが私がしなければならないことです。

イベントを一時的に削除し、フィールドをぼかして再度フォーカスし、イベントを元に戻すこともできますが、これは見苦しいハックです。jQuery のような動的に追加されるイベントによって複雑になります。本当に私が望むのは、「フォーカス値」を「新しい値」に設定することですが、これを見つけることができませんでした。defaultValue を設定してみることができましたが、これでは正しい form.reset() が妨げられます。

于 2010-03-11T19:52:05.237 に答える