Urmel: Real time Rechner (AJAX/JS)

Beitrag lesen

zum anderen musst Du Dir über die Zahlendarstellung klar werden. Standardmäßig verwendet JavaScript einen Dezimalpunkt und interpretiert das Komma als ungültiges Zeichen, d.h. der Wert von "1,234" wäre 1.

Wenn man input type="number" verwendet, was wie gesagt sinnvoll ist, muss man das nicht. Der Browser akzeptiert dann Eingaben in der jeweiligen Locale. Z.B. ein deutschsprachiges Betriebssystem, ein deutschsprachiger Browser akzeptiert "1,234" und erkennt es als 1,234.

Die einfachste Lösung ist, sowohl Punkt als auch Komma als Dezimaltrennzeichen zu akzeptieren und die Anwender per Hinweis auf der Maske aufzufordern, keine Tausendertrennzeichen zu verwenden.

Die einfachste Lösung wäre, das dem Browser zu überlassen. Der kennt das eingestellte Locale und akzeptiert entsprechende Eingaben.

Wie die Browser mit dem jeweils »falschen« Dezimaltrenner umgehen, ist unterschiedlich. Manche akzeptieren das Zeichen als Dezimaltrenner, manche unterdrücken deren Eingabe, in manchen wird dadurch die Eingabe invalide.

In all diesen Fällen würde ich nichts tun, nur wie gewohnt dafür sorgen, dass das invalide Feld ersichtlich wird. (Dann sollte auch kein setCustomValidity nötig sein.)

var eingabe1 = document.getElementById('feld1').value.replace(',', '.'); var wert1 = parseFloat(eingabe1);

Worum so umständlich? Es gibt dafür valueAsNumber:

https://codepen.io/anon/pen/jjbBEZ?editors=1010

Urmel