以编程方式更改值时触发Dojo滑块onChange事件

以编程方式更改值时触发Dojo滑块onChange事件,dojo,slideshow,Dojo,Slideshow,我有多个相互连接的Dojo水平滑块。在滑块的onChange事件中,其他滑块的值将更新。以编程方式更改值将触发相应滑块的onChange事件,该滑块将再次触发自己的onChange事件并覆盖这些值 我确实需要设置mediateChanges=true,这使得priorityChange标志在本例中无效。此外,我还尝试设置一个变量来检查一个滑块是否处于活动状态,但由于时间问题,该变量无法正常工作 带有两个滑块的简化示例: var sliding = false; var slider1 = ne

我有多个相互连接的Dojo水平滑块。在滑块的onChange事件中,其他滑块的值将更新。以编程方式更改值将触发相应滑块的onChange事件,该滑块将再次触发自己的onChange事件并覆盖这些值

我确实需要设置mediateChanges=true,这使得priorityChange标志在本例中无效。此外,我还尝试设置一个变量来检查一个滑块是否处于活动状态,但由于时间问题,该变量无法正常工作

带有两个滑块的简化示例:

var sliding = false;

var slider1 = new HorizontalSlider({
                value: 70,
                minimum: 0,
                maximum: 100,
                discreteValues: 101,
                intermediateChanges: true,
                onChange: function() {
                    if (sliding == false) {
                        sliding = true;
                        new_value = [...]
                        slider2.set("value", new_value, false);
                    };
                    sliding = false;
                }
            }, "slider1");

var slider2 = new HorizontalSlider({
                value: 30,
                minimum: 0,
                maximum: 100,
                discreteValues: 101,
                intermediateChanges: true,
                onChange: function() {
                    if (sliding == false) {
                        sliding = true;
                        new_value = [...]
                        slider1.set("value", new_value, false);
                    };
                    sliding = false;
                }
            }, "slider2");

slider1.startup();
slider2.startup();
我还发现了这个示例,它似乎解决了Dojo Select的相同问题:

当以编程方式更改滑块的值时,如何防止触发滑块的onChange事件


谢谢大家!

可能有点难看,但你可以这样做:

var sliding = false;

var slider1 = new HorizontalSlider({
                value: 70,
                minimum: 0,
                maximum: 100,
                discreteValues: 101,
                intermediateChanges: true,
                onChange: function() {
                    if (sliding == false) {
                        sliding = true;
                        new_value = [...]
                        slider2.set("intermediateChanges", false);
                        slider2.set("value", new_value, false);
                        slider2.set("intermediateChanges", true);
                    };
                    sliding = false;
                }
            }, "slider1");

var slider2 = new HorizontalSlider({
                value: 30,
                minimum: 0,
                maximum: 100,
                discreteValues: 101,
                intermediateChanges: true,
                onChange: function() {
                    if (sliding == false) {
                        sliding = true;
                        new_value = [...]
                        slider1.set("intermediateChanges", false);
                        slider1.set("value", new_value, false);
                        slider1.set("intermediateChanges", true);
                    };
                    sliding = false;
                }
            }, "slider2");

slider1.startup();
slider2.startup();