2017-06-30 2 views
1

Sie müssen verhindern, dass Menschen versehentlich 2 Dezimalstellen in eine Menge von type = number Eingabefeldern mit step = any eingeben. Ich habe Folgendes vergeblich versucht.Javascript entfernen doppelte Dezimalpunkte in Zahleneingabe

alle diese nur leer den Wert, oder gar nichts tun und die doppelten Dezimalzahlen bleiben.

https://jsfiddle.net/uLayjmkv/

+2

Einige Beispiele Eingabe/Ausgabe von dem, was Sie erwarten, wäre hilfreich beim Verständnis Ihrer Frage. – Carcigenicate

+0

Wenn also meine Verkäufer "1..35" anstelle von "1.35" eingeben, muss die doppelte Dezimalzahl entfernt werden. – b747fp

+0

Wie korrigieren Sie sie, wenn sie "11.35" anstelle von "1.35" eingeben? – James

Antwort

0

Dank für die Eingabe jeden, was ich am Ende ist dabei auf keyup, ändern attr „Typ“ auf „Text“, die() laufen ersetzen und ihn dann wieder eine „Nummer“ ändern .

2

So etwas vielleicht? Mit Typ ‚Text‘ nicht ‚Zahl‘

let last = ''; 
 

 
document.getElementById('me').addEventListener('input', (e) => { 
 
    const match = e.target.value.match(/[-+]?\d*\.?\d*/); 
 
    if (match || e.target.value === '') { 
 
    last = match ? match[0] : ''; 
 
    } 
 

 
    e.target.value = last; 
 
}, false);
<input id="me" type="text" />

scheint für mich auf Chrom 58. ok arbeiten Sie wissen nicht, ob es noch weitere Grenzfälle sind.