Textfeld ins Uhrzeit-Format

pglw

Erfahrenes Mitglied
Hallo,

habe ein normales Textfeld. Maximalgröße sind 5 Zeichen. Nun hätte ich gerne,daß wenn zB. eingeben wird: 1212 --> daraus sofort bei der Eingabe 12:12 im Feld wird.

Wie kann ich das machen?

Thanx

PGLW
 
onblur="if ( this.value.match(/^\d{3}|\d{4}$/) ) this.value=this.value.replace(/(\d\d)$/,':$1')"
 
Zuletzt bearbeitet:
Tach,

das könntest du z.B. mit onBlur() machen. Also wenn du das Feld verlässt.

Code:
<input type='text' onBlur='uhr(this)'>

Die Funktion könntest du beispielsweise so aufbauen:

Code:
function uhr(elem)
{
   inhalt = elem.value;
   var vor = inhalt.substring(0,2);
   var nach = inhalt.substring(2,4);
   var neu = ''+vor+':'+nach+'';

   elem.value = neu;
}

Grüße
 
Zuletzt bearbeitet:
Deine Funktion, Fred, hat drei Fehler:

1.) Zu viel Code
2.) Sie deckt nicht ab, dass die Eingabe auch 903 für 9:03 Uhr lauten könnte.
3.) Sie setzt einen Doppelpunkt auch dann, wenn schon einer eingegeben wurde.

Meine hat deise Probleme nicht.
 
Zuletzt bearbeitet:
Dank Dir, wirklich. Sehr elegante Lösung und funktioniert auch noch prächtig!

Bei einem anderem Inputfeld würde ich gerne folgendes erreichen:

1)Es dürfen dort nur Zahlen eingegeben werden, mit Ausnahme des Buchstaben "m" und eines Kommas.
2)Wenn ich eingebe: 10m dann soll sofort bei Eingabe daraus 10000000 (in Worten 10 Millionen) werden
Wenn ich eingebe: 3,5m dann soll sofort bei Eingabe daraus 3500000 werden.

Wie könnte das funktionieren?

PGLW
 
Vom Prinzip her gleich. Du brauchst eigentlich auch nur reguläre Ausdrücke mit Javascript verwenden.

Warum versuchst du's nicht mal selbst? Die Dinger sind ungemein Praktisch. Kannst dich ja mal mit beschäftigen, es lohnt sich.

Wenn du auf Probleme stößt, poste gerne nochmal hier rein. Es geht mir halt nur darum, dass ich hier nicht deine ganze Arbeit machen. Ich denke mal du verstehst das. :-)
 
@Con-f-use: Hast ja recht, deckt nicht alles ab u. ist zu aufwändig. Hab wohl nicht wirklich drüber nachgedacht. :-(
Naja, kann ja jedem mal passieren.:rolleyes:
 
Hi, komme auf Dein Angebot zurück hier nochmal zu posten, wenn ich Probleme habe. Habe lange rumprobiert, aber keine Lösung gefunden.Hier ist das, was ich bisher habe:

<input type="text" name="MFunktion" maxlength="5"onblur="if ( this.value.match(/^[0-9]+$/) ) this.value=this.value.replace(/(\d)/,'000000$1')" > <b>Millionen-Feld<br>

Dieser Code macht vor eine Ziffer 6 Nullen. Ich hätte aber gerne, daß:
1) Die Nullen rechts von der Ziffer stehen
2) Nur dann 6 Nullen angefügt werden, wenn eine Ziffer direkt von einem "m" gefolgt wird.

Ziel ist also, daß aus "3,5m" wird: 3500000
oder aus "3" wird:3000000

Habs lange probiert, komme aber leider (trotz Regenechsen) keinen Schritt weiter. Für Lösungsansätze wäre ich sehr dankbar.

PGLW
 
Also erstens: Wenn du die 6 Nullen rechts von der Zahl haben willst, dann müssen sie auch im Ersatz-String rechts von der Backreferrenz stehen.

Zweitens prüfst du nirgenwo auf ein "m", dass du dann ersetzt.
 
Ok, die 6 Nullen sind jetzt rechts davon. Leider wird im Moment noch beim Verlassen des Feldes das "m" am Ende angehängt. Wie kann ich das killen?

<onblur="if ( this.value.match(/[0-9]+m$/) ) this.value=this.value.replace(/(\d+)/,'$100000')" >

PGLW
 

Neue Beiträge

Zurück