我有多个滑块,每个滑块都链接到表单字段。当其中任何一个通过拖动或键入进行更新时,我想重置所有其他内容。
这样做的原因是我希望用户在尝试更改另一个滑块(窗体)之前将其更改保存到一个滑块(窗体)。否则,我重置了更改。
我无法收听update
或set
事件并在其他滑块上调用.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
});
});
答案 0 :(得分:0)
尝试使用" slide"
SLIDER1.noUiSlider.on('slide', function(){
SLIDER2.noUiSlider.set( *defaultvalue* );
SLIDER3.noUiSlider.set( *defaultvalue* );
...
});
"滑动"没有调用.set()
方法,但工作方式与"更新"
也许这是你的解决方案:)