0

Using dojo 1.9, I'm trying to access the value of a checkbox not like in the example in the docs:

require(["dijit/form/CheckBox", "dojo/domReady!"], function(CheckBox){ 
    var checkBox = new CheckBox({ 
        name: "checkBox", 
        value: "agreed", 
        checked: false, 
        onChange: function(b){ alert('onChange called with parameter = ' + b + ', and     widget value = ' + this.get('value') ); } 
    }, "checkBox"); 
}); 

but by moving onChange event to:

query('#checkBox').on('change', function(){ 
    var value = query(this).attr('value'); 
}); 

or anything similar. I just want to access it from on() method. But I get the same value every time - checkbox is checked. Any ideas?

Zemljoradnik
  • 2,672
  • 2
  • 18
  • 24

2 Answers2

2

And again I made the same mistake - it should be

registry.byId('checkBox').on('change', function(){ 
    var value = this.value; 
});
Zemljoradnik
  • 2,672
  • 2
  • 18
  • 24
0

dojo/query returns plain dom Nodes of the widgets, and therefore, we cannot attach the "on" event handler, directly to the query result. As you have said, we can use registry.byId(...)

In addition, let me give a suggestion, where the query would return more number of dom nodes.

array.forEach(dojo.query('.classname'),function(node){
  dijit.getEnclosingWidget(node).on('change',function(){
    var value = this.value;
    console.info(value);
  });
});

dijit.getEnclosingWidget(domNode) - will give the immediate parent widget node of the mentioned 'domNode'

vivek_nk
  • 1,590
  • 16
  • 27
  • Nice one, thank you. But I see you are using the old, pre AMD syntax. Now days it's registry.getEnclosingWidget(node). – Zemljoradnik Aug 27 '13 at 11:27