2017-02-17 21 views
2

Ich habe einen sehr einfachen JS-Code - das Ziel ist ein Komma durch einen Punkt in 'Echtzeit' (dh wie der Benutzer schreibt). Wenn beispielsweise Benutzertypen in: 43,65 dann sollte es automatisch korrigiert: 43.65 etc:Javascript - automatisch ein Komma zu einem Punkt (für Eingabe Typ = "Nummer") während der Eingabe

<input onkeyup="this.value=this.value.replace(',','.')" type="number">

Aber es funktioniert nicht (zumindest in Firefox) - wenn Ich gebe eine Nummer ein und füge ein Komma hinzu, die Nummer verschwindet komplett. Und wenn ich einen Punkt eintippe, wird er entfernt. So funktioniert es überhaupt nicht wie erwartet ...

ich auch versucht:

<input onkeyup="this.value=this.value.replace(/,/g, '.')" type="number">

aber es funktioniert auch nicht ...

Antwort

1

Es ist möglich, aber nur auf input Typ text. input Typ number lässt keine anderen Symbole als Ziffern zu.

var input = document.getElementById('input'); 
 
function validate(){ 
 
    input.value = input.value.replace(/,/g, "."); 
 
}
<input onkeyup="validate()" type="text" id='input'>

+0

Anzahl Eingänge hilft Zahlen erlauben Gleitkomma. Sollte das nicht Ziffern und Punkte bedeuten, aber keine Kommas? – evolutionxbox

+0

@evolutionxbox Versuchte es.Hat nicht funktioniert. –

+0

ja, ich könnte es über type = "text" tun, aber dann gibt es keinen 'Pfeil' in der Nähe der Eingabe (ich denke, der Punkt von html5 war, das Leben einfacher zu machen). Hart zu glauben, warum es nicht erlaubt, ein Komma zu einem Punkt mit einem JS zu ersetzen .. – Tom

1

Versuchen Sie, den folgenden Code

function numbersOnly(event) { 
 
    var key = event.keyCode; 
 
    return ((key >= 96 && key <= 105) || (key >= 48 && key <= 57) || key == 188 || key==46 || key==8); 
 
};
<input onkeydown="return numbersOnly(event)" onkeyup="this.value=this.value.replace(',','.')" type="text">

+1

input type = "Anzahl" erlaubt schwimmt, wenn Sie hinzufügen, z. step = "0.01" dazu. Ihr Code ist nett - aber es sollte auch Backspace enthalten, um einen Eintrag bei Bedarf löschen zu können: – Tom

+0

@Tom, Backspace hinzugefügt –

+1

Vielleicht wird es für jemanden nützlich sein (wenn ja, möchten Sie vielleicht auch sicherstellen, dass die Eingabe akzeptiert und lässt eine Periode - für jetzt scheint es nicht ..). – Tom

1

weiter zu erklären, was hier vor sich geht; Wenn ein Benutzer etwas anderes als Zahlen oder Dezimalzahlen in eine Eingabe vom Typ <input type="number"> eingibt, wird der Wert automatisch leer sein. Aus diesem Grund können Sie die Eingabetypnummern nicht wie gewünscht bearbeiten. Wenn du erreichen willst, was du vorhast, musst du einen Eingabe-Text <input type="text"> verwenden und ein paar Javascript-Funktionen schreiben, um den gewünschten Effekt zu erzeugen.

function replace(element) { 
 
    // set temp value 
 
    var tmp = element.value; 
 
    // replace everything that's not a number or comma or decimal 
 
    tmp = tmp.replace(/[^0-9,.]/g, ""); 
 
    // replace commas with decimal 
 
    tmp = tmp.replace(/,/, "."); 
 
    // set element value to new value 
 
    element.value = tmp; 
 
}
<input id='numberInput' onkeyup="replace(this)" type="text">

Dieser Code sollten Sie mit einem Eingabefeld vom Typ Text erhalten begonnen, die etwas anderes als Zahlen und Dezimalzahlen ausschließen, während alle Kommas in Dezimalzahlen konvertieren.

Wenn Sie einen Zähler im rechten Teil des Eingabefeldes behalten möchten, müssen Sie zwei Schaltflächen hinzufügen. Inkrementierer und Dekrementierer, sowie eine Funktion, die den Eingangswert der Texteingabe in einen doppelten & konvertiert, inkrementiert oder dekrementiert das Doppel abhängig davon, welche Taste gedrückt wurde. Wenn Sie Probleme mit diesem Teil haben, würde ich vorschlagen, eine weitere Frage zu stellen.

0

Funktion Kommas Textfelder hinzuzufügen:

function Comma1(Num) { 
    Num += ''; 
    Num = Num.replace(',', ''); Num = Num.replace(',', ''); Num = Num.replace(',', ''); 

    x = Num.split('.'); 
    x1 = x[0]; 
    x2 = x.length > 1 ? '.' + x[1] : ''; 
    var rgx = /(\d+)(\d{4})/; 
    while (rgx.test(x1)) 
     x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
    return x1 + x2; 
} 

i denkt, das Sie