2009-07-29 17 views
1

Grundsätzlich möchte ich einen Eingang haben, dass, wenn blur'd, wird die Eingabe überprüfen, um sicherzustellen, dass es in das Format ...Überprüfen Sie, ob der Benutzer ein Zeitformat eingibt? zB 13.00

[24 Stunden]: [Minuten]

Also zum Beispiel 13:00 oder 15:30.

Also ich denke, ich habe es aufgeteilt in drei Teile, überprüfen Sie das erste Bit zwischen 0 und 24 ist, dann überprüfen Sie es das Semikolon hat, dann überprüfen Sie es eine Zahl zwischen 0 und hat 60

Es wird komplizierter, wenn es so ist, wenn der Benutzer 19 eingibt, wird es als 19:00 zum Beispiel abgeschlossen.

Ich benutze jQuery fwiw, aber normaler Code ist in Ordnung, zum Beispiel verwende ich dieses kleine Stück Code bisher, die gut funktioniert, um zu konvertieren. Eingänge:

tempval = $(this).val().replace(".", ":"); 
$(this).val(tempval); 

Nicht sicher, wo damit beginnen, wenn mir jemand etwas zu lesen, dass wäre fantastisch empfehlen könnte, danke!

Antwort

1

Ich empfehle mit masked input10 Auf diese Weise wird die falsche Eingabe an erster Stelle verhindert werden.

Haftungsausschluss: ich, dass ich nicht verwendet haben, Plugin, fand es nur durch keywords „maskierte Eingang“

+0

Das könnte absolut perfekt sein - danke! Ich würde es gerne selbst machen, wenn möglich, und kann den Code noch einmal aufsuchen, wenn ich noch etwas Zeit habe, aber ich denke, das könnte ideal sein, um jetzt zu verwenden! Vielen Dank :) – Nick

4

([0-1] [0-9] | 2 [0-3]?): ([0-5] [0-9])

Ich denke, das ist die regex Sie suchen für (nicht speziell für Javascript).

http://www.regular-expressions.info/ Diese Seite hat eine ausgezeichnete Menge an Informationen für sprachspezifische reguläre Ausdrücke! Prost!

+0

Ahh, danke - ich nun einen Blick auf diese werden! – Nick

+1

Danke, gerade versucht es so zu implementieren ... if ($ (this + ": regex ('([0-1]? [0-9] | 2 [0-3]): ([0-5 ] [0-9]) ') ")) { alert (' ist in Ordnung '); } ... Aus irgendeinem Grund zeigt es immer 'es funktioniert!' selbst wenn es nicht sollte :( – Nick

+1

Versuchen Sie so etwas ... if (this.match (/^([0-1]?[0-9] | 2 [0-3]): ([0-5] [0-9]) $ /)) { alert ('ist in Ordnung'); } –

1

Es gibt eine Reihe von Widgets, die sich bereits mit der Zeitüberprüfung befassen - versuchen Sie, nach "jQuery time widget" zu suchen - die first result sieht nicht schlecht aus.

+0

Vielen Dank - das sieht gut aus, aber ich würde lieber kein Widget verwenden, wenn möglich da die Benutzer nicht sehr technisch versiert sind und ich denke, dass es einfach besser ist, den Text einzugeben (und mit Javascript entsprechend zu validieren/zu bearbeiten), könnte es besser sein, als eine Art beeindruckenden, aber etwas verwirrenden Picker zu verwenden. Sie müssen auch 14 verschiedene Zeiten wählen, also ist die Geschwindigkeit, in der sie es tun können, ziemlich wichtig. Cheers – Nick

1
var re = /^(\d+)(:\d+)?$/; 
var match = re.match(yourstring); 

Nun, wenn das Spiel match ist ein Array mit den angepassten Stücke gelungen ist: match[0] ist die ganze yourstring (Sie kümmern sich nicht um das), match[1] die Ziffern vor dem Doppelpunkt hat (falls vorhanden Doppelpunkt, sonst nur Ziffern), match[2] wenn es existiert hat der Doppelpunkt gefolgt von den Ziffern danach. So, jetzt müssen Sie nur Ihre numerischen Tests auf match[1] und möglicherweise match[2] minus dem führenden Doppelpunkt durchführen, um sicherzustellen, dass die Zahlen korrekt sind.

+0

Vielen Dank Alex, aus irgendeinem Grund dachte ich nicht, es so aufzuteilen, aber es ist eine großartige Lösung, auf die ich jetzt eingehen werde! – Nick

Verwandte Themen