JQuery-UI-Schieberegler für die Zeit

Lesezeit: 4 Minuten

Hallo, ich muss einen Schieberegler für den 24-Stunden-Zeitbereich implementieren. Ich verwende dafür gerne den jquery ui-Slider. Ich habe unten Code geschrieben

<script type="text/javascript">
$(function() {
    $(".slider-range").slider({
        range: true,
        min: 0,
        max: 23.59,
        step: 0.15
    });
});
</script>

Ich mag den Bereich wie 01:00 —- 01:59

Wie ich den Doppelpunkt (:) anstelle von Punkt (.) gegeben habe. Auch der Bereich war über 59 wie 05:85 hinausgegangen. Bitte helfen Sie mir, einen Zeitschieber zu erstellen

Benutzer-Avatar
Tatu Ulmanen

Verwenden Sie nicht Stunden als Einheit, sondern Minuten. Dann bewerben Sie sich a slide Ereignis, das die Minuten in Stunden umwandelt:

$(function() {
    $(".slider-range").slider({
        range: true,
        min: 0,
        max: 1440,
        step: 15,
        slide: function(e, ui) {
            var hours = Math.floor(ui.value / 60);
            var minutes = ui.value - (hours * 60);

            if(hours.toString().length == 1) hours="0" + hours;
            if(minutes.toString().length == 1) minutes="0" + minutes;

            $('#something').html(hours+':'+minutes);
        }
    });
});

  • Hallo, es funktioniert gut. Vielen Dank. Hinweis: Stunden. Länge hat bei mir nicht funktioniert. Ich verwende hours.toString().length

    – Nisanth Kumar

    17. Februar 2010 um 10:46 Uhr

  • Eine Sache, die hinzugefügt werden muss, ist die Konvertierung der Stunden und Minuten in Zeichenfolgen, bevor ihre Länge überprüft wird, sodass Sie „00“ Minuten anstelle von „0“ allein erhalten. var minuten = minuten+””; //vor str.länge

    – radtek

    12. Juni 2014 um 13:36 Uhr

  • Die Antwort scheint sehr gut zu sein, braucht aber dringend ein Fidde-Beispiel. Bitte helfen Sie mir mit dem Geigenbeispiel

    – Gaurav Aggarwal

    11. Dezember 2015 um 12:20 Uhr

  • Leute, könnten Sie mir bei diesem Problem helfen.stackoverflow.com/questions/45350964/…

    – Varun Sharma

    28. Juli 2017 um 13:52 Uhr

Benutzer-Avatar
Jeff Weinberg

Verbesserung der Antwort von Tatu, um den Zeitbereich in “ziviler Zeit” mit einer 12-Stunden-Uhr und AM- und PM-Bezeichnungen zu erhalten. Hier ist ein JSFIDDLE

*Aktualisierung – Ich habe den Code leicht geändert, sodass der Mindestwert als „00:00 Uhr“ und der Höchstwert als „23:59 Uhr“ angezeigt wird. Die Geige wird auch aktualisiert …

    $( "#slider-range" ).slider({
            range: true,
            min: 0,
            max: 1440,
            step: 15,
            values: [ 600, 720 ], //or whatever default time you want
            slide: function(e, ui) {
                var hours1 = Math.floor(ui.values[0] / 60);
                var minutes1 = ui.values[0] - (hours1 * 60);

                if(hours1.length == 1) hours1 = '0' + hours1;
                if(minutes1.length == 1) minutes1 = '0' + minutes1;
                if(minutes1 == 0) minutes1 = '00';

                if(hours1 >= 12){

                    if (hours1 == 12){
                        hours1 = hours1;
                        minutes1 = minutes1 + " PM";
                    }
                    else{
                        hours1 = hours1 - 12;
                        minutes1 = minutes1 + " PM";
                    }
                }

                else{

                    hours1 = hours1;
                    minutes1 = minutes1 + " AM";
                }
                if (hours1 == 0){
                    hours1 = 12;
                    minutes1 = minutes1;
                }

                $('.slider-time').html(hours1+':'+minutes1);

                var hours2 = Math.floor(ui.values[1] / 60);
                var minutes2 = ui.values[1] - (hours2 * 60);

                if(hours2.length == 1) hours2 = '0' + hours2;
                if(minutes2.length == 1) minutes2 = '0' + minutes2;
                if(minutes2 == 0) minutes2 = '00';
                if(hours2 >= 12){
                    if (hours2 == 12){
                        hours2 = hours2;
                        minutes2 = minutes2 + " PM";
                    }
                    else if (hours2 == 24){
                        hours2 = 11;
                        minutes2 = "59 PM";
                    }
                    else{
                        hours2 = hours2 - 12;
                        minutes2 = minutes2 + " PM";
                    }
                }
                else{
                    hours2 = hours2;
                    minutes2 = minutes2 + " AM";
                }

                $('.slider-time2').html(hours2+':'+minutes2);
            }
    });

  • Ich habe es versucht und es hat funktioniert, obwohl ich ein paar Kommentare habe. Das Javascript enthält Codes wie „hours1=hours1“ und „minutes1=minutes1“, die meine Entwicklungsumgebung amüsant „seltsame Zuweisung“ nennt. Auch das CSS in JSfiddle enthält ein paar lange, kaputte und ziemlich verdächtige URLs.

    – paulo62

    6. August 2015 um 12:39 Uhr

  • @paulo62 – Die URLs im CSS heißen Daten-URIs (css-tricks.com/data-uris) und die “seltsamen Aufgaben” sind definitiv seltsam, ich glaube, ich hatte sie als Lehrmittel eingefügt, um zu veranschaulichen, dass in diesen Fällen die Werte gleich bleiben.

    – Jeff Weinberg

    7. August 2015 um 15:09 Uhr

Benutzer-Avatar
verwirren

Hier ist meine 24-Stunden-Version basierend auf den beiden Antworten für Eingabefelder

Javascript

jQuery(function() {
    jQuery('#slider-time').slider({
        range: true,
        min: 0,
        max: 1440,
        step: 15,
        values: [ 600, 1200 ],
        slide: function( event, ui ) {
            var hours1 = Math.floor(ui.values[0] / 60);
            var minutes1 = ui.values[0] - (hours1 * 60);

            if(hours1.length < 10) hours1= '0' + hours;
            if(minutes1.length < 10) minutes1 = '0' + minutes;

            if(minutes1 == 0) minutes1 = '00';

            var hours2 = Math.floor(ui.values[1] / 60);
            var minutes2 = ui.values[1] - (hours2 * 60);

            if(hours2.length < 10) hours2= '0' + hours;
            if(minutes2.length < 10) minutes2 = '0' + minutes;

            if(minutes2 == 0) minutes2 = '00';

            jQuery('#amount-time').val(hours1+':'+minutes1+' - '+hours2+':'+minutes2 );
        }
    });
});

HTML

<label for="amount-time">Time</label>
<input type="text" name="amount-time" id="amount-time" style="border: 0; color: #666666; font-weight: bold;" value="10:00 - 20:00"/>
<div id="slider-time"></div><br>

  • Wie könnte ich dies in eine Zeitauswahl (VS eine Zeitbereichsauswahl) umwandeln? Mit anderen Worten, wie könnte ich das obere Zeitlimit loswerden?

    – Greg

    23. Mai 2014 um 13:32 Uhr

Es sollte nur Stunden2 < 10 und Minuten2 < 10 sein, nicht Stunden2.Länge < 10 und Minuten2.Länge < 10. Dies ist die Auswertung des numerischen Werts, nicht der Zeichenfolgenlänge.

1065330cookie-checkJQuery-UI-Schieberegler für die Zeit

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy