11

我希望我的滑块上的工具提示只显示像“130”而不是“130.00”这样的整数。我只是不知道我可以从哪里开始。

这是我的代码:

$( document ).ready(function() {
var groesseslider = document.getElementById('slider-tooltip');

noUiSlider.create(groesseslider, {
    start: [ 145 ],
    step: 1,
    range: {
        'min': 100,
        'max': 250
    }
});
    });
$( document ).ready(function() {
    var groesseslider = document.getElementById('slider-tooltip');
var tipHandles = groesseslider.getElementsByClassName('noUi-handle'),
    tooltips = [];

// Add divs to the slider handles.
for ( var i = 0; i < tipHandles.length; i++ ){
    tooltips[i] = document.createElement('div');
    tipHandles[i].appendChild(tooltips[i]);
}

// When the slider changes, write the value to the tooltips.
groesseslider.noUiSlider.on('update', function( values, handle ){
    tooltips[handle].innerHTML = values[handle];
});
    });

我的 JS 代码:http: //jsfiddle.net/miiauwz/66a5ahm0/

4

9 回答 9

25

这可以工作..

var sliderFormat = document.getElementById('slider-format');

noUiSlider.create(sliderFormat, {
start: [ 20 ],
...
format: {
    from: function(value) {
            return parseInt(value);
        },
    to: function(value) {
            return parseInt(value);
        }
    }
});
于 2016-07-18T11:37:43.223 回答
17

您可以尝试使用unencodednoUISlider 关于事件及其绑定的文档中描述的值

slider.noUiSlider.on("update", function(values, handle, unencoded ) {
    // values: Current slider values;
    // handle: Handle that caused the event;
    // unencoded: Slider values without formatting;
});

或者另一种可能性是在创建滑块时使用格式选项(但我自己还没有尝试过):

noUiSlider.create(slider, {
    start: [ 20000 ],
    ...
    format: wNumb({
        decimals: 0, // default is 2
        thousand: '.', // thousand delimiter
        postfix: ' (US $)', // gets appended after the number
    })
});

缺点是您必须从此处单独下载 wNumb-Library:http ://refreshless.com/wnumb/ 。


没有 wNumb 的另一种方法

在再次查看来自 noUISlider 的示例后,我发现了这种手动格式化的方式(在页面底部):

var sliderFormat = document.getElementById('slider-format');

noUiSlider.create(sliderFormat, {
    start: [ 20 ],
    ...

    format: {
      to: function ( value ) {
        return value + ',-';
      },
      from: function ( value ) {
        return value.replace(',-', '');
      }
    }
});
于 2015-07-26T01:07:47.557 回答
3

如果您认为您的网站不需要有小数位,您可以在 jquery.nouislider.min.js 文件中搜索toFixed(2)并替换为toFixed(0).

于 2017-03-07T03:09:22.110 回答
1

我不想使用 wNumb - library ,这种方法可能有效。这将为您提供不带小数的值。希望这可以帮助。

value.split('.')[0]
于 2015-09-04T09:35:15.227 回答
0

不使用任何其他库的可能方式。如果我们只想显示整数,则无需使用其他库。假设在 html 代码中有元素“slider-fee”。

<div id="slider-fee"></div>

假设我们想提供选择一天中某个时间范围的可能性。像 7h-19h 或 8h-20h 之类的东西,在工具提示中我们只想显示整数。

dragTapSlider = document.getElementById('slider-fee');

// number of decimal places 
decimals = 0;

// format object
numberFormat = {
    // 'to' the formatted value. Receives a number.
    to: function (value) {
        return value.toFixed(decimals);
    },
    // 'from' the formatted value.
    // Receives a string, should return a number.
    from: function (value) {
        return Number(value);;
    }
};

noUiSlider.create(dragTapSlider, {
    start: [8, 20],
    connect: [false, true, false], 
    step: 1,
    behaviour: 'drag',
    tooltips: [true, true],
    range: {
        'min': 1,
        'max': 24
    },
    format: numberFormat
});

noUiSlider - 整数格式

货币范围示例

dragTapSlider = document.getElementById('slider-fee');

decimals = 2;
suffix = '€';

numberFormat = {
    // 'to' Format the value to currency.
    to: function (value) {
        return value.toFixed(decimals) + ' ' + suffix;
    },
    // 'from' Convert currency value to number.
    // Receives a string, should return a number.
    from: function (value) {
        return Number(value.replace(' ' + suffix));
    }
};

noUiSlider.create(dragTapSlider, {

    start: [25, 40],
    connect: [false, true, false],
    step: 0.5,
    behaviour: 'drag',
    tooltips: [true, true],
    range: {
        'min': 20,
        'max': 50
    },
    format: numberFormat
});

noUiSlider - 货币格式

于 2021-01-08T17:06:45.497 回答
0

想我会提供一个答案,以防其他人来寻找这个。只需将以下内容作为选项添加到 noUiSlider 创建中:

tooltips: [ wNumb({ decimals: 0 }), wNumb({ decimals: 0 }) ],

以下代码将使用 noUiSlider 工具提示创建您需要的滑块,该工具提示仅显示不带小数点的整数值:

$( document ).ready(function() {
var groesseslider = document.getElementById('slider-tooltip');

noUiSlider.create(groesseslider, {
    start: [ 145 ],
    step: 1,
    tooltips: [ wNumb({ decimals: 0 }), wNumb({ decimals: 0 }) ],
    range: {
        'min': 100,
        'max': 250
    }
});
于 2016-11-08T15:17:41.800 回答
0




var skipSlider = document.getElementById('price');

noUiSlider.create(skipSlider, {
    start: [47000, 247000],
    connect: true,
    behaviour: 'drag',
    step: 1,
    range: {
      'min': [47000],
      'max': [247000]
    },
});

var skipValues = [
    document.getElementById('min-price'),
    document.getElementById('max-price')
];

skipSlider.noUiSlider.on('update', function (values, handle, unencoded) {
    skipValues[handle].innerHTML = unencoded[handle];
});




于 2019-03-16T02:32:16.753 回答
0

没有外部库的反应示例:

<Nouislider
    range={{ min: 0, max: 5 }}
    tooltips={true}
    step={1}
    start={[0, 5]}
    connect
    format={{
      from: (value) => {
        return parseInt(value);
      },
      to: (value) => {
        return parseInt(value);
      }
    }}
    onSlide={onUpdate}
/>
于 2022-01-19T13:42:25.940 回答
0

只需为此使用 Math 而不是库。

Math.round(value)
于 2019-06-17T20:11:47.610 回答