Dezimalzahl prüfen

Arndtinho

Erfahrenes Mitglied
Hallo,

wie kann man mit Javascript prüfen, obe die eingegebene Zahl in ein Formularfeld eine Dezimalzahl ist?

Gruß
Arndtinho
 
HTML:
<form>
    <input type="text" id="zahlenfeld" />
    <input type="button" value="Prüfen" onclick="
        alert(
            document.getElementById('zahlfeld').value.match(/(\d+)|(\d+\.\d+)/)
                 ? 'Eine Zahl'
                 : 'Keine Zahl'
        );
    ">
</form>
Könnten noch vereinzelt Fehler drin sein, das Prinzip sollte aber klar werden. Wobei mir nicht so wirklich einleuchten will, was du genau mit "Dezimalzahl" meinst - ich für meinen Teil benutze nämlich eher selten Oktal-, Hexadezimal- oder Binärzahlen und denke deine User werden das ähnlich selten tun.
 
Zuletzt bearbeitet:
Die User können in einem Feld eine Preisangabe machen.
Ich möchte prüfen, ob eine Zahl in das Feld eingeben wurde und dann noch im gewünschten Format ( 1.90, 1.000,23 oder 100.000,85 )

Gruß
Arndtinho
 
Wie ich schon sagte, das Prinzip sollte eigentlich nach meinem obigen Post klar sein. Du wirst dich aber noch mit regulären Ausdrücken auseinandersetzten müssen.

Hilfreich könnte auch der Number-Formater auf meiner Seite zu tutorials.de sein. Einfach mal in den Quellcode schauen und dich einwenig schlau machen.

Der entsprechende RegEx sollte ungefähr so aussehen: /^\d{1,3}(\.\d{3})*\,\d{2}$/ig
 
Zuletzt bearbeitet:
Erstmal Danke für den Tipp. Habe ein wenig gegoogelt und mir andere Scripte angesehen und bastel mir eine Funktion zusammen. So siehts im Moment aus:
Code:
function checkValue() {
         
         // "Prüf"-ausdruck
         var reg = /,-{1,}|\.-{1,}|\.0{1,}/;
         
         // Nach-Komma-Stellen checken und ggf. ersetzen
         var nan_test_value = document.check.zahl.value.replace( reg, ",00" );  
         
         // Prüfen ob Vor-Komma-Stelle eine Zahl ist
         if( isNaN( parseFloat( nan_test_value ) ) ) {
            alert( "Keine Zahl" );
         }
}
Das klappt auch. Nun mach ich mir Gedanken, wie ich prüfen kann, ob nach dem Komma 2 Stellen vorhanden und ob diese nummerisch sind.
Beispiel:
Code:
Eingabe: 123,45
Ergebnis: 'Nach-Komma' = 45 -> true;

Eingabe: 123,456  
Ergebnis: 'Nach-Komma' = 456 -> false;

Eingabe: 123,bla  
Ergebnis: 'Nach-Komma' = bla -> false;

Eingabe: 123,4bla  
Ergebnis: 'Nach-Komma' = 4bla -> false;

Eingabe: 123,de  
Ergebnis: 'Nach-Komma' = de -> false;
Ich hoffe, ich habe es halbwegs verständlich ausgedrückt.
 
Sorry, aber das tut irgentwie weh. Es ist zwar lobenswert, dass du dich mit dem Thema beschäftigt hast, aber du hättest einfach nur das lesen müssen, was ich dir gegeben habe. Das Script steht schon fast komplett da. Teste einfach nur mal das in einer html-Datei und es sollte funktionieren:
HTML:
<html><head><title>Unbekannt</title></head><body>
<form>
    <input type="text" id="zahlenfeld" />
    <input type="button" value="Prüfen" onclick="
        alert(
            document.getElementById('zahlenfeld').value.match(/^\d{1,3}(\.\d{3})*\,\d{2}$/) 
            ? 'Eine richtigformatierte Zahl' 
            : 'Keine richtigformatierte  Zahl' 
        ); "> 
</form>
</body>
Das ist mein obiges Script mit den eben geposteten RegExp. Der Testet schon automatisch, ob auch wirklich zwei Nachkommastellen drin sind usw.
Wenn du jetzt die Links über reguläre Ausdrücke, die ich oben gepostet habe liest, weißt du auch wie und warum das Script funktioniert und kannst es gegebenfalls noch anpassen.
 
Sorry, dass ich noch nicht geantwortet habe und den Thread als erledigt markiert hatte.
Habe mir Deine Sachen angeschaut und es funktioniert. Danke.
 

Neue Beiträge

Zurück