Dojo Select onChange event firing when changing value programmatically
Often people solve this by using the priorityChange flag:
myWidget.set("value", 1234, false);
That will solve your problem except for subtle issues where the value is originally 123, you set it programatically to 456, and then the user sets it back to 123, in which case there won't be an onChange() event for the user action either.
For that reason you can additionally do:
myWidget._lastValueReported=null;