如何重置所有其他noUiSliders而不是用户正在玩的那个?

时间:2016-08-05 05:44:33

标签: javascript event-handling nouislider

我有多个滑块,每个滑块都链接到表单字段。当其中任何一个通过拖动或键入进行更新时,我想重置所有其他内容。

这样做的原因是我希望用户在尝试更改另一个滑块(窗体)之前将其更改保存到一个滑块(窗体)。否则,我重置了更改。

我无法收听updateset事件并在其他滑块上调用.set(),因为这会触发无限循环。

那么如何在不触发任何事件的情况下重置滑块?或者任何人有不同的方法?

(根据要求添加代码)

slider.noUiSlider.on('set', function(values, handle) {
    $(slider).parents('form').siblings('form').find('my-slider').each(function() {
        var values = this.noUiSlider.get();
        var originals = $(this).closest('.mirror-field').toArray();
        values.forEach( function(val, index) {
            if ( ! val.isSame(originals[index].value)) { // val is a 'moment' object
                values[index] = originals[index].value;
            }
        });
        this.noUiSlider.set(values); // this is when chaos is unleashed
    });
});

1 个答案:

答案 0 :(得分:0)

尝试使用" slide"

SLIDER1.noUiSlider.on('slide', function(){
    SLIDER2.noUiSlider.set( *defaultvalue* );
    SLIDER3.noUiSlider.set( *defaultvalue* );
    ...
});

"滑动"没有调用.set()方法,但工作方式与"更新"

相同

也许这是你的解决方案:)