2012-11-08 15 views
13

In der letzten Aktualisierung von Chrome ("23.0.1271.64 m" in meinem Fall) scheint es, dass Eingabe = Zeit jetzt Sekunden enthält, die inaktiv und nicht anklickbar sind. Das sieht auf unserer Seite nicht gut aus, also möchte ich wissen, ob jemand einen Weg gefunden hat, Sekunden zu entfernen. Leider ist jsfiddle down und ich kann dort kein Beispiel posten, aber ich poste es hier, damit die Leute es trotzdem lesen können.Sekunden entfernen in Chrome Eingabe = Zeit

<html> 
<head></head> 
<body> 
    <input type="time" value="00:44" name="tiiiiden"/> 
</body> 
</html> 

Da Sekunden nur „da liegen“ und können nicht bearbeitet werden, ist es möglich, dass dies ein Fehler ist, und es wird ziemlich bald behoben sein.

Antwort

4

Chrome 23 stabil unter OSX und Linux lässt die Sekundenfelder weg, wenn es nicht notwendig ist, und Chrome 24 Beta unter Windows lässt es auch weg. Ich empfehle Ihnen, auf die stabile Version von Chrome 24 zu warten.

+0

Was ist mit Android? –

2

Haben das gleiche Problem. Ich verwendete eine feste Breite mit white-space: nowrap und overflow: hidden, um die Sekunden zu verbergen, aber wenn der Eingang fokussiert wird, bleibt das Problem bestehen.

4

ich keine Änderung finden konnten/Release Notes für 23.0.1271.64 m, die auf Veränderungen der forminput Typen bezieht sich aber nach den neuesten Arbeitsentwurf des HTML5 markup documentation von W3C das input type="time" Element unterstützt keine anderen Zeitformat als "eine gültige Teilzeit, wie in RFC 3339 definiert, und das ist hh:mm:ss.ff und hh:mm:ss.

Da es kein Attribut gibt, um ein eigenes Datums-/Uhrzeitformat für Datum/Uhrzeit inputelements festzulegen, stecken Sie mit dem/den definierten Format (en) fest.

Von input type=time – time input control

Wert: Eine gültige Teilzeit als in [RFC 3339] definiert.
Beispiele:
23: 20: 50,52
17:39:57

Von RFC 3339

zeit secfrac = "" 1 * DIGIT
Teilzeit = Zeit-Stunde ":" Zeit-Minute ":" Zeit-Sekunden [Zeit secfrac]

Schließlich schließe ich einen Screenshot, wie Chrome 23.0.1271.64 m macht die verschiedene Zeitformate (auf meiner Maschine);

<input type="time" value="23:20:50.52" /> 
<input type="time" value="17:39:57" /> 
<input type="time" value="13:37" /> 
<input type="time" value="" /> 

enter image description here

Das Markup ist auch bei jsFiddle zur Verfügung.

+0

Es scheint einen Fehler in Chrome zu geben, der verhindert, dass Zeitfelder gesendet werden, wenn sie Sekunden haben (siehe [hier] (http://jsfiddle.net/ZGTUr/12/)). – Behrang

1

Android Chrome und Web-Browser haben immer noch das Problem, so habe ich ein Smartphone-spezifische Behelfslösung AngularJS mit:

http://jsfiddle.net/Rvjuf/12/

Wie es funktioniert:

Es gibt zwei Elemente, die damit umgehen :

<span>{{ timeDisplay }}</span> 
<input type="time" ng-model="time"> 

im Link-Code, Stil der Elemente, und bindet an den Klick selbst (kann auch in CSS-Datei tun) die Spannweite:

 scope.inputElement.css({ 
      position: "absolute", 
      "z-index": "-10000", 
      opacity: 0 
     }); 
     scope.displayElement.css({ 
      width: "200px", 
      height: "20px", 
      background: "blue", 
      color: "white", 
     }); 
     scope.displayElement.bind("click", function(event) { 
      scope.inputElement[0].focus(); 
      scope.inputElement[0].click(); 
     }); 

Dann eine Änderung Zuhörer für den Zeitwert registrieren und die timedisplay Variable aktualisieren:

 $scope.$watch('time', function(nv, ov) { 
      var parts = nv.split(" ")[0].split(":"); 
      var hours = parts[0]; 
      var minutes = parts[1]; 
      $scope.timeDisplay = $filter('date')(new Date(2014, 03, 06, hours, minutes, 0), "H:mm"); 
     }); 

Also, wenn der Benutzer auf die Spanne tippt, die Eingabe entweder wird fokussiert oder angeklickt (iOS und ANDROID unterscheiden sich dort), wodurch die native Zeitauswahl-Benutzeroberfläche aufgerufen wird.

14

Ich weiß, das ist eine sehr alte Frage, aber ich habe gerade die Lösung gefunden.

Sie müssen Ihren Schritt auf 60 ändern. Wenn Sie Ihren Schritt Standard (1) verlassen, muss es eine Sekunde erhöhen, so dass es Sekunden im Feld anzeigen muss.

Wenn Sie Ihren Schritt auf 60 stellen, wird er um jeweils 1 Minute erhöht, sodass die Sekunden nicht angezeigt werden müssen.

+0

scheint nicht auf Android 4.4/Chrome 30 webview/US-Gebietsschema zu funktionieren –

+0

Es scheint, dies ist [ein Fehler in Android Chrome] (http://stackoverflow.com/a/28664821/245966), die in Chrome 43 gelöst wurde –

1

@ hend's Lösung von Einstellung step bis 60 funktioniert auf einem leeren Eingang, aber wenn Sie Ihr Formular mit Werten voraufgefüllt laden, werden Sie feststellen, dass Sekunden in einem deaktivierten Zustand wieder angezeigt werden können.

enter image description here

Sie können sie und die baumelnden Doppelpunkt mit der folgenden CSS-Maske:

enter image description here

0

Wir verwenden moment.js:

::-webkit-datetime-edit-second-field { 
    background: $color-white; 
    color: transparent; 
    margin-left: -3px; 
    position: absolute; 
    width: 1px; 
    } 

Welche der folgenden ergibt um das zu beheben. Sie können die Sekunden abrunden die milis in einer vorab ausgefüllten Eingabezeit zu vermeiden, indem Sie auf Controller mit:

const localDate = moment(data.date).startOf('minute').toDate(); 

Ich hoffe, es hilft;)

0

ich hatte das gleiche Problem, wenn Sie eine bereits verwenden bevölkerten Datum Ihre Eingabe zu füllen, verwenden Sie nur das:

var myDate = new Date(); 
myDate.setSeconds(0); 
myDate.setMilliseconds(0); 

Mit dem Input-Tag wie folgt aus:

<input type="datetime-local" step="60"/> 

Ich benutze natürlich eckig, aber alles sollte funktionieren, da Date Javascript ist.

Verwandte Themen