2016-08-05 23 views
0

私は複数のスライダを持っており、それぞれがフォームフィールドにリンクしています。それらのいずれかが更新されると、ドラッグまたは入力のいずれかによって、私は他のすべてをリセットしたい。他のすべてのnoUiSlidersをリセットするにはどうしたらいいですか?

これは、ユーザーが別のスライダー(フォーム)に変更を保存してから別のスライダー(フォーム)に変更してもらいたいためです。そうでなければ、私は変更をリセットします。

私はupdatesetイベントに耳を傾け、それは無限ループの引き金になるので、他のスライダーに.set()を呼び出すことはできません。

イベントをトリガーすることなくスライダーをリセットするにはどうすればよいですか?誰かが違うアプローチをしていますか? "スライド"

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

"スライド" を使用して

(要求されるようにコードを追加)

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

downvoteで詳述してください。 – rzb

答えて

0

試みは.set()メソッドを呼び出す何とか "更新"

と同じように動作しますしません。

これはあなたの解決策です:)

+0

申し訳ありませんが、最初に誤字を犯しました。今はうまくいくはずです。 –

+0

ありがとうございます。それはもう少し複雑です(私は質問に多くの情報を追加しました)。ハンドルをフォームフィールドにリンクする場合と同様に、スライダがプログラムによって変更されると、「スライド」イベントはトリガされません。 – rzb

+0

私は本当に '更新'や '設定'イベントを聞く必要があると思うが、これらのイベントをトリガーせずに他のスライダーを更新(リセット)する方法を見つける必要がある。 – rzb

関連する問題