Hallo,
Nun möchte ich aber sowohl das Dezimalkomma als auch den Dezimalpunkt zulassen.
Das würde ich lassen, damit arbeitest du entgegen dem Standardverhalten der Browser und damit entgegen der Erwartungen des Nutzers.
ich will ja beides zulassen. Der user kann eingeben, was er will. Das Standardverhalten der Browser wird auf jeden Fall unterstützt.
Ich gebe aber zu, dass die Formular-Lokalisierung der Browser viele Wünsche offen lässt. Du könntest den Eingabetypen zurück auf
text
setzen und die gültigen Zahlen mit einem regulären Ausdruck und dempattern
-Attribut validieren.
Das mache ich ja schon, nur nicht mit rattern
, sondern per Javascript in der Einleseroutine.
Aber dann geht die semantische Information verloren, dass eine Zahl erwartet wird. Eine Folge ist, dass Smartphones keine spezifischen virtuellen Tastaturen einblenden. Damit schränkst du die Bedienbarkeit und Zugänglichkeit nur weiter ein.
Aus genau diesem Grund habe ich eine Routine, die ich seit fast 10 Jahren verwende, in Zweifel gezogen und auf type=number
umgestellt.
Im Firefox kannst du das
lang
-Attribut auf deminput
-Element setzen, dann verwendet FF eine Zahlendarstellung, die für die angegebene Sprache hinterlegt ist. Chrome ignoriert das Attribut und benutzt scheinbar immer das Zahlenformat, das für die im Browser eingestellte Defaultsprache hinterlegt ist. Edge und Safari habe ich nicht ausprobiert.
aber das hilft mir nicht weiter. Es soll ja beides gehen.
Im Prinzip ist ja type=number
das Mittel der Wahl, wenn nicht falsche Eingaben als NaN oder Leerstring ausgelesen würden.
Gruß
Jürgen