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