5

私はdojotoolkit1.8を試していますが、dojo / form/selectのonchangeイベントをフックする方法がわかりません

これでは何も起こりません

require(["dojo/dom","dojo/on"], function(dom,on){
   on(dom.byId("myselect"),"change",function (evt){
         alert("myselect_event");

});

代わりに、クリックへの次のフックが機能します。

on(dom.byId("myselect"),"click",function (evt){
  • しかし、ユーザーがクリックして変更した後の値をキャプチャしたい

Plain oljavascriptonChangeに戻るよりも簡単だと確信しています...

どうも

4

5 に答える 5

4

あなたはこのようなことを試すことができます:

    var select = dijit.byId('myselect');

    select.on('change', function(evt) {
        alert('myselect_event');
    });

私はこれをリファレンスガイドで何度も見ました。たとえば、「A Select FedByAStore 」のdijit/form/selectのリファレンスガイドです。

多分それは戻ってくるかもしれhandleません、私はこれまでこれを調べていません。しかし、私はそれがうまくいくはずだと思います。

編集:

@phusickのコメントを考慮して、追加したいのですが、呼び出し内で"change"to"onChange"またはdomtoを変更することもできますdijiton(...)

于 2012-11-26T07:44:32.627 に答える
2

@nozzlemanの答えの足跡をたどってみてください

var select = registry.byId('myselect');

select.on('change', function(evt) {
    alert('myselect_event');
});

onの代わりにを使用する場合connectは、を書く必要はなくonChange、単にを書くことができますchange

于 2012-11-26T13:48:45.710 に答える
0

上記の回答と同様に、dijit.ByIdを実行して正しい要素を見つけ、「onItemClick」イベントを登録します。

選択ドロップダウンを作成すると、選択項目を作成するノードにプログラムで_menuが追加されるため、ページの初期化で「検索」が「検索メニュー」になり、次のことができます。

  dojo.connect(dijit.byId('search_menu'),'onItemClick',function(){
        //console.log("search menu");
        doSearch('recreation');
     });    
于 2013-02-14T21:00:56.130 に答える
0

他の人が指摘しているように、あなたはDOMを使用してDijitにアクセスしようとしています。また、「change」イベントの無名関数のパラメーターは、イベント自体ではなく、ユーザーが選択した値です。

Dijitにアクセスし、「変更」イベントを処理するように変更されたコードは次のとおりです。

require(["dijit/registry", "dojo/on"], function(registry, on) {
   on(registry.byId("myselect"), "change", function (value) {
         alert("change_event.value = " + value);
   });
});
于 2014-12-30T18:46:00.180 に答える
0

パーティーに遅れましたが、最近問題に遭遇しました。うまくいけば、私の答えは、いくつかの貧しい人々がいくつかのレガシーコードを維持するのに役立つでしょう。答えはコンボボックス用ですが、選択用にも機能しました-

onChangeは、DojoComboboxからのクエリをトリガーするのに十分ではありません。ドロップダウンアイテムにリスナーをアタッチする必要があります。

select.dropDown.on("itemClick", function(dijit, event) {
var node = dijit.domNode;
console.log(domAttr.get(node, "data-info-attribute"));
// or
console.log(node.dataset.infoAttribute);
});

参照:https ://stackoverflow.com/a/12422155/4564016

于 2016-06-21T14:16:32.360 に答える