Bernd: type="time"

Hallo,

ist es möglich bei einem

<input type="time" name="ende" id="ende" value="" ">

zu sagen, der zweite Werte (die Minuten) nur in 25 Schritten zuzulassen? Also 25, 50, 75 oder 00?

  1. Moin,

    <input type="time" name="ende" id="ende" value="">
    

    step="x" sollte deine Aufgabe lösen. Dabei ist $$x$$ in Sekunden anzugeben. 25 minuten wären dann, $$25*60 = 1500$$.

    [...] der zweite Werte (die Minuten) nur in 25 Schritten zuzulassen? Also 25, 50, 75 oder 00?

    Warum 25 Minuten? 75 Minuten gibt es nicht, das wären 1Stunde und 15 Minuten.

    Gruß
    Jo

    1. Moin,

      Warum 25 Minuten? 75 Minuten gibt es nicht, das wären 1Stunde und 15 Minuten.

      bei uns schon. Eine viertele Stunde = 15min = 0,25, eine halbe Stunde = 30min = 0,5, eine dreiviertel Stunde = 45min = 0,75, eine Stunde = 60min = 1

      1. Hallo,

        Warum 25 Minuten? 75 Minuten gibt es nicht, das wären 1Stunde und 15 Minuten.

        bei uns schon. Eine viertele Stunde = 15min = 0,25, eine halbe Stunde = 30min = 0,5, eine dreiviertel Stunde = 45min = 0,75, eine Stunde = 60min = 1

        Ich seh's nicht. Wo sind da die 25 Minuten?

        Gruß
        Kalk

        1. Moin,

          Ich seh's nicht. Wo sind da die 25 Minuten?

          60 min = 1
          15 min = 0,25
          30 min = 0,5
          45 min = 0,75

          Ich merke, time darf ich hier nicht nutzen sondern ich muss ein herkömmliches Textfeld nehmen. Dann muss ich schauen ob ich dieses irgendwie begrenzen kann.

          1. Tach!

            60 min = 1
            15 min = 0,25
            30 min = 0,5
            45 min = 0,75

            Ich merke, time darf ich hier nicht nutzen sondern ich muss ein herkömmliches Textfeld nehmen.

            type=time ist eine Uhrzeit, du möchtest aber eine Zeitspanne, und die auch nicht in Minuten (was mit time auch nur ginge, wenn man eine Uhrzeit als Zeitspanne missbraucht) sondern in prozentualen Anteilen einer Stunde. Also ja, da geht nur was anderes, aber das kann vom Typ number sein. Jedenfalls wenn es nur die Dauer in Minuten oder prozentual ist, nicht aber beim Mischgebilden wo beispielweise zu den Minuten auch noch Stunden im selben Feld abgehandelt werden sollen.

            dedlfix.

          2. @@Bernd

            Warum 25 Minuten? 75 Minuten gibt es nicht bei uns schon.

            Nein, auch bei euch nicht. Eine Viertelstunde sind nicht 25 Minuten, sondern 25 Hundertstel Stunden.

            Ich merke, time darf ich hier nicht nutzen sondern ich muss ein herkömmliches Textfeld nehmen.

            Nein. <input type="number" step="0.25"/>.

            Dann muss ich schauen ob ich dieses irgendwie begrenzen kann.

            min- und max-Attribute existieren.

            LLAP 🖖

            --
            „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
    2. Moin,

      step="x" sollte deine Aufgabe lösen. Dabei ist $$x$$ in Sekunden anzugeben. 25 minuten wären dann, $$25*60 = 1500$$.

      ok, dieses funktioniert wenn ich die Pfeile ganz rechts in diesem Feld betätige. Wenn ich in das Feld 14:05 schreibe funktioniert es, was falsch ist bzw. was nicht erlaubt sein darf.

      1. Wenn ich in das Feld 14:05 schreibe funktioniert es, was falsch ist bzw. was nicht erlaubt sein darf.

        Test:

        <html>
        	<form>
        		<input name="t" type="time" step=1500>
        		<button>foo</button>
        	</form>
        </html>
        

        Wenn der Input nach der Eingabe den Fokus verliert (also wenn die Eingabe abgeschlossen ist) "meckert" der Firefox, beim "Versenden" des Formulars der Chromium. In jedem fall wird der Versand der Daten verweigert. (Beide unter Ubuntu und aktuell.) Direkt bei der Eingabe zu prüfen ist zu viel Stress und könnte vor allem die Benutzer durch eine verfrühte Fehlermeldung verwirren.

        1. "Schmutziger" Schnellschuss für eine mögliche Lösung:

          <html>
          	<form id="formular" onsubmit="setTimeValue()">
          		<input id="h" type="number" min=0 max=23 step=1 style="width:3em">:<select id="m"><option value=0>00</option><option value=.25>15</option><option value=.5>30</option><option value=.75>45</option></select>
          		<input id="t" name="t" type="hidden" />
          		<button>foo</button>
          	</form>
          	<script>
          	  function setTimeValue () {
          		document.getElementById('t').value = document.getElementById('h').value * 3600 + 3600 * document.getElementById('m').value;
          	  }
          	</script>
          </html>
          
          1. @@ursus contionabundo

            "Schmutziger" Schnellschuss für eine mögliche Lösung:

            Einen Wert auf zwei Eingabefelder zu verteilen ist wohl keine Lösung. Und dann auch noch zwei unterschiedliche. Und dann auch noch select mit den bekannten Nachteilen (mühsame Bedienung, um nur einen zu nennen).

            LLAP 🖖

            --
            „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann