Hilfe bei js-Script

gogekko

Themenstarter
Bekanntes Mitglied
Hallo,

wer ist so freundlich und zeigt mir, was zu tun ist. Sehr gerne mit Erklärung, damit ich etwas lernen kann.

Wie kann ich folgendes miteinander kombinieren:

1. 1000er Separator bei Eingabe sichtbar also vermutlich number.toLocaleString()

2. Wenn ausversehen ein , eingegeben wurde dann in . umwandeln (erledigt s. Code)

HTML:
<html>
<head>
    <title>Untitled</title>
    <script language="javascript">
        <!-- Waehrungsrechner1
        function waer1() {
            a = document.waehrungsrechnerform1.a.value;
            b = a / 14;
            c = Math.round(b * 100) / 100;
            document.waehrungsrechnerform1.total1.value = c
        }
    </script>
</head>

<body>
    <table>
        <form name="waehrungsrechnerform1">
            <tr>
                <td class="box">16.00 <input type="text" name="a" size="6" onblur="event.target.value = event.target.value.replace(',', '.')"> E</td>
                <td class="box">= <input type="text" name="total1" size="6"> €</td>
                <td class="box"><input type="button" value="Go" onclick="waer1()"></td>
            </tr>
        </form>
    </table>
</body>
</html>

Vielen Dank! cu gg
 

dr_tommi

alter Oldie
1. 1000er Separator bei Eingabe sichtbar also vermutlich number.toLocaleString()
bei der Eingabe nicht möglich, da wird das angezeigt was eingegeben wurde.

Im Ergebnis einfach durch Änderung der Zeile
von
Code:
 document.waehrungsrechnerform1.total1.value = c
in
Code:
 document.waehrungsrechnerform1.total1.value = c.toLocaleString()

Oder hab ich da was falsch verstanden?

Falls jedoch bei der Eingabe die Tausendertrennung mit eingegeben wurde, führt das zum Fehler.
Hier müsste mehr geprüft und umgewandelt werden.
Es kommt also genau darauf an was, wann und wo das passieren soll.
 

gogekko

Themenstarter
Bekanntes Mitglied
@dr_tommi: Danke für Deine Rückmeldung - ich denke der erste Ansatz von mir war falsch.

1000 Seperator bei Eingabe wäre anstelle von onblur:

onkeyup="this.value=this.value.toString().replaceAll(/[^\d]/g, '').replaceAll(/(\d)(?=(?:\d\d\d)+$)/g, '$1.')" pattern="[0-9\s]*"

Das funktioniert allerdings nur ohne Nachkommastellen also 1000,20 E geht nicht das wird in 100.020 € umgewandelt.

Ziel ist:

Eingabe 1000 -> Anzeige im Eingabefeld 1.000
Eingabe 1000,10 -> Anzeige im Eingabefeld 1.000,10
 

dr_tommi

alter Oldie
Dann lass doch einfach nach der Eingabe den Eingabewert mit .toLocaleString() umwandeln, da sind dann die Punkte mit drin.
 

gogekko

Themenstarter
Bekanntes Mitglied
Habe ich nicht hinbekommen ...

onkeyup="this.value=this.value.toLocaleString('en-US')"

funktioniert nicht ...

Gibt es evt. eine CSS-Lösung?
 
Zuletzt bearbeitet:
Oben Unten