Get value of checkbox in dojo, with on() method

6.1k Views Asked by At

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?

2

There are 2 best solutions below

1
On

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'

0
On

And again I made the same mistake - it should be

registry.byId('checkBox').on('change', function(){ 
    var value = this.value; 
});