Search code examples
jqueryasp.net-mvcmomentjsion-range-slider

Ion Range Slider with HH:mm format From & To not working


I am trying to use Ion Range Slider in my project to select working hours. Ex: (08:00-19:00).

 $('#ion').ionRangeSlider({
    grid: false,
    type: 'double',
    min: moment("0000", "hhmm"),
    max: moment("2359", "hhmm"),
    from: moment("0800", "hhmm"),
    to: moment("1900", "hhmm"),
    force_edges: true,
    drag_interval: true,
    step: 3600000,
    min_interval: 3600000,
    prettify: function (num) {
        return moment(num).format('HH:mm');
    }
});

When i want to set default working hours using from & to, it doesn't work. Slider works, though, but values are not changing.

What am i missing?


Solution

  • Because you are using hours in milliseconds you need to change the value of moment you are using from an object to its milliseconds value:

    min: moment("0000", "hhmm"),   // this is an object and not a number...
    max: moment("2359", "hhmm"),
    from: moment("0800", "hhmm"),
    to: moment("1900", "hhmm"),
    

    Change to (see docs for details):

    min: moment("0000", "hhmm").valueOf(),
    max: moment("2359", "hhmm").valueOf(),
    from: moment("0800", "hhmm").valueOf(),
    to: moment("1900", "hhmm").valueOf(),
    

    $('#ion').ionRangeSlider({
        grid: false,
        type: 'double',
        min: moment("0000", "hhmm").valueOf(),
        max: moment("2359", "hhmm").valueOf(),
        from: moment("0800", "hhmm").valueOf(),
        to: moment("1900", "hhmm").valueOf(),
        force_edges: true,
        drag_interval: true,
        step: 3600000,
        min_interval: 3600000,
        prettify: function (num) {
            return moment(num).format('HH:mm');
        }
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>
    <link rel="stylesheet" href="https://rawgit.com/IonDen/ion.rangeSlider/master/css/ion.rangeSlider.css">
    <link rel="stylesheet" href="https://rawgit.com/IonDen/ion.rangeSlider/master/css/ion.rangeSlider.skinModern.css">
    <script src="https://rawgit.com/IonDen/ion.rangeSlider/master/js/ion.rangeSlider.min.js"></script>
    
    
    <input type="text" id="ion" name="example_name" value="" />