2012-08-21 1 views
5

Ich habe ein HTML mit mehreren Feldern. Eines der Felder erlaubt nur numerische Eingaben. Aber jetzt möchte ich, dass wenn Benutzer in dieses Feld einfügen alle Zeichen außer Zahlen, die entfernt oder gelöscht.Löschen Sie alle nicht-numerischen Zeichen im Eingabefeld auf Einfügen Ereignis Javascript

Zum Beispiel Benutzer Paste:

$ 1 234 567 -> 1234567 in Eingabefeld

1.234.567 -> 1234567

1.234.567 -> 1234567

und so weiter

+0

Ist „-“ (als Minuszeichen) numerisch? Im Allgemeinen ist es keine gute Idee, Zeichen aus Benutzereingaben automatisch zu löschen. Wenn ich 100 Artikel bestellen wollte, es aber irgendwie schaffte, 1oo zu tippen, würde ich gerne gewarnt werden und zur Korrektur aufgefordert werden, anstatt meine Bestellung stillschweigend in 1 Artikel zu ändern. –

+0

Danke für den Kommentar, ich werde es für die Zukunft behalten. Zu dieser Zeit muss ich nur dieses Muster lösen. – halofourteen

Antwort

11

verwenden Regex.

<input id="inputBox" name="inputBox" /> 
<script type="text/javascript"> 
var inputBox = document.getElementById('inputBox'); 
inputBox.onchange = function(){ 
    inputBox.value = inputBox.value.replace(/[^0-9]/g, ''); 
} 
</script>​ 

oder Sie könnten einen Timer verwenden, um dieses Feld ständig zu überprüfen.

<input id="inputBox" name="inputBox" /> 
<input id="inputBox2" name="inputBox2" /> 
<script type="text/javascript"> 
var timer = new Array(); 
function checkFields(el){ 
    var inputBox = document.getElementById(el); 
    inputBox.value = inputBox.value.replace(/[^0-9]/g, ''); 
    clearTimeout(timer[el]); 
    timer[el] = setTimeout((function(){ checkFields(el); }), 50); 
}; 
function timerFields(el){ 
    timer[el] = setTimeout((function(){ checkFields(el); }), 50); 
}; 
timerFields('inputBox'); 
timerFields('inputBox2'); 
</script>​ 
0
var f = function (s) { 
    var r = ''; 

    for (var i in s) { 
    if ('0' <= s[i] && s[i] <= '9') { 
     r += s[i]; 
    } 
    } 

    return r; 
} 

alert(f('123.234-234?345')); // 23234234345 

Aber verwenden regexp aus einer anderen Antwort :)

2

versuchen diese

var regexp=/\D/g; 
alert(("$1 234 567").replace(regexp,"")); 
Verwandte Themen