1

#annual-sales 入力フィールドに四捨五入されていない数値を入力すると、プラグインは「上」または「下」に応じて自動的に四捨五入します。1234567 などの特定の数値をフィールドに入力して、その値を保持する方法はありますか? 次に、前または次の値にスライドすると、元の位置に戻ります。

<input type="text" id="annual-sales">
<div class="slider-wrap">
  <div class="range-slider-sales-vol"></div>  
</div>

// The first number in the array represents the range. Between the 4 options below I have a range from 1000 - 1000000.
// The second number represents the stepped increments within the given range. From the first to second range the stepped increments are 1000.

var range_all_sliders = {
    'min': [ 1000, 1000 ],
    '33%': [ 100000,  50000 ],
    '66%': [ 500000, 100000 ],
    'max': [ 1000000 ]
};

$('.range-slider-sales-vol').noUiSlider({
    start: [ 1000 ],
    range: range_all_sliders,
    format: wNumb({
        decimals: 0
    })   
});

// Pips plugin for points along range slider
$('.range-slider-sales-vol').noUiSlider_pips({
    mode: 'positions',
    values: [0,33,66,100],
    density: 4,
    stepped: true
});

// links range slider to input
$('.range-slider-sales-vol').Link("lower").to($('#annual-sales'));
4

1 に答える 1

1

これは、独自のchangeハンドラーを実装し、デフォルトで設定されている noUiSlider をオーバーライドすることで実行できます。

var annualSales = $('#annual-sales'), guard = false;

function setSalesValue(value){
    if ( guard ) return;
    $(this).val(value);
}

annualSales.change(function(){
    var value = $(this).val();

    guard = true;
    slider.val(value);
    guard = false;
});

// links range slider to input
$('.range-slider-sales-vol').Link("lower").to(annualSales, setSalesValue);

変数の使用に注意してください。これは、スライダーがハンドラーguardに設定された値で入力を更新するのを防ぎます。change

あなたのコードを実際ので更新しました。入力フィールドを変更してみてください。スライダーは更新されますが、入力値はリセットされません。スライダーを動かすと、入力更新されます。

于 2014-09-27T09:16:56.790 に答える