9

HTML内に選択があります

<select id="league" name="league">

これは、JavaScript内の変更をリッスンしています。

var league = dojo.byId("league");
dojo.connect(league, "onchange", function (evt) { //do stuff }

これは問題なく動作します。ただし、クリックして選択を更新するリンクがあります。

<a href=javascript:void(0) onclick="updateSelection(league);"> League </a>

リンクは、次の関数を使用してselectの選択された値を更新するときに機能します。

function updateSelection(NewLeague){
dojo.byId('league').value = NewLeague;  // works
dojo.byId('league').onChange;   //this isnt working
//dojo.byId('league').onChange();  //this throws: TypeError: dojo.byId("league").onChange is not a function 
}

私の問題は、他のスタック投稿を読んだときに、プログラムで値を更新してもonChangeがトリガーされないことです。したがって、コードでonchangeを呼び出す必要があります(上記を参照)。インラインのコメントによると、onChangeがトリガーされていないか、エラーがスローされます。onChangeをリッスンするdojo.Connectと関係があると最初に思ったのですが、これができないという情報も、回避方法の説明も見つかりませんでした。

何か案は?

4

3 に答える 3

14

Select onchangeは、プログラムによる変更では起動しません。自分で起動する必要があります。league.onchange();

@Gregが指摘しているように、呼び出しは小文字にする必要があります。

さらに、dojoにトリガーメソッドがあるかどうかはわかりませんが、jQueryではこれはとして実行されjQuery('#league').trigger('change')ます。

dojoのバージョンによっては、次のことも確認することをお勧めします:http: //dojotoolkit.org/reference-guide/1.8/dojo/connect.html

于 2012-10-18T16:06:59.817 に答える
1

通常のjsを使用してIDでselectを呼び出してみましたか?

document.getElementById('league').onchange.call();
于 2012-10-18T16:32:24.873 に答える
0

他の人が言っているように、自分でイベントをトリガーする必要があります。値を設定するだけではトリガーされません。JavaScriptでイベントをトリガーする方法のコードを参照してください。クロスブラウザの方法でその方法を確認します。

于 2012-10-18T16:39:24.277 に答える