JavaScript nach Feld verlassen Komma durch Punkt ersetzen?

arberex99

Lieutenant
Registriert
Aug. 2020
Beiträge
620
Hallo,

ist es mit JavaScript möglich, dass man nach verlassen ein evtl. eingegebenes Komma durch einen Punkt ersetzt wird?
Problem ist, dass sonst die Berechnung nicht funktioniert. Bin da totaler Neuling, könnte mir das bitte evtl. jemand ergänz bei dem Code?

<input type="text" size="3" name="Feld1" id="Feld1" value="3.35">
 
Willst du wirklich den Inhalt des Feldes ändern, oder könntest du dort, wo du den Wert verwendest, nicht versuchen, das zu berücksichtigen?

Und input type number wäre sinnvoll, ich finde sie nur hässlich mit diesen Buttons an der Seite usw... aber grundsätzlich kommt man damit auch ans Ziel.
 
  • Gefällt mir
Reaktionen: arberex99
Für den Fall, dass du wirklich das Komma ersetzen willst:

HTML:
<input type="text" size="3" name="Feld1" id="Feld1" value="3.35" onblur="event.target.value = event.target.value.replace(',', '.')">

Die anderen Lösungsvorschläge sind aber insgesamt sinnvoller. Aber der Vollständigkeit halber ist deine Frage dann hiermit beantwortet :)
 
  • Gefällt mir
Reaktionen: arberex99
Könnte man da nicht einfach das direkt in der Zeile ergänzen, dass das beim Verlassen gemacht wird?
Bräuchte nur kurzfristig was, kann quick & dirty sein für den Anfang.
<input type="text" size="3" name="Feld1" id="Feld1" value="3.35">
Ergänzung ()

Nafi schrieb:
Für den Fall, dass du wirklich das Komma ersetzen willst:

HTML:
<input type="text" size="3" name="Feld1" id="Feld1" value="3.35" onblur="event.target.value = event.target.value.replace(',', '.')">

Die anderen Lösungsvorschläge sind aber insgesamt sinnvoller. Aber der Vollständigkeit halber ist deine Frage dann hiermit beantwortet :)
Exakt das habe ich gesucht, vielen, vielen Dank!!
Danke auch, für die anderen guten Tipps :)
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: floq0r
du kannst die eingabemöglichkeit in textfeldern mittels eines pattern beschränken, sonst könnten da auch texte statt nummern ankommen:

HTML:
<input type="text" size="3" name="Feld1" id="Feld1" value="3.35" pattern="[0-9.]*" />
nach hinweis von @floq0r * ergänzt
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: arberex99
Input prüfen. IMMER. HTML Form types entbinden einen nicht davon.

Hier mal in Richtung regex pattern matching gucken. Und natürlich einfaches substring matching.

Eingaben immer erstmal als unbekannten Haufen Datenmüll annehmen und Dinge die man da gerne draus gelesen hätte erst raus interpretieren mit isnumber() oder was weiß ich.
 
  • Gefällt mir
Reaktionen: netzgestaltung
@netzgestaltung Das pattern müsste auf [0-9.]* abgeändert werden. An patterns hatte ich zunächst auch gedacht aber das verhindert nicht die Eingabe von non-matches sondern beeinflusst nur den :valid Status. Zur Beeinflussung des Values ist wieder JS nötig, da löse ich wo ich es brauche aber gleich bei keyup
 
naja da gibt es dann ein extra event element.oninvalid/invalid - form validierung ist sowieso ein weites feld. die validierung im frontend dient ja hauptsächlich dazu ein gutes nutzererlebnis zu bieten und ersetzt nicht die serverseitige validierung vor dem eintragen in einer DB. Aber hier wird die eingabe für eine Rechnung benutzt, da hilft das schon - auch beim keyup event um nachzusehen ob der aktuelle status valide ist.

https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/invalid_event
 
Zuletzt bearbeitet:
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: floq0r
Nochmals, die Form validierung ist schön für die Eingabe selber, aber wertlos für die Weiterverarbeitung. Genau so wie auf dem Server gesondert geprüft werden muss, ist das Script unabhängig von html oder sonstwas. Ergo, Checks fallen unmittelbar in den JavaScript Bereich, ggfs. irgendwo ausgelagert, aber eben dort.

Sonst nimmst das Script, ziehst es um und hey presto Fehler und irgendwelche unbestimmten Ergebnisse… weil plötzlich das Form gar nicht mehr da ist.
 
Zurück
Oben