2010-12-29 11 views
1

Ich muss den Benutzereintrag automatisch in eine Texteingabe löschen - um nur Nummern zu erlauben, außer für das erste Zeichen, das eine Zahl oder sein könnte ein Bindestrich.Erlaube nur numerische Eingaben in einer Texteingabe und erlaube einen Bindestrich als optionales erstes Zeichen

So zum Beispiel, wenn der Benutzer 138a29 würde es automatisch auf 13829

aktualisiert ich eine onKeyPress Veranstaltung wurde mit der keyCode zu überprüfen, nur Nummern zu erlauben, aber das erwies sich ist ein wenig schwierig zu sein, erlauben wirklich nur Zahlen, ohne Pfeiltasten, Rücktaste, usw. in einigen Browsern zu brechen. Und jetzt gibt es eine neue Anforderung, einen Bindestrich (-) als optionales erstes Zeichen zuzulassen, aber ein Bindestrich ist nirgendwo anders in der Zeichenfolge gültig.

Ich habe die Prototyp-Bibliothek für mein bestimmtes Projekt, aber keine jQuery verwenden.

+0

Ist das zu reinigen, während sie die Eingabe (das heißt nicht ungültige Zeichen erlauben) oder den Wert vor dem einreichen zu reinigen? – Sparky

+0

Sauber während sie tippen. – NatalieMac

+0

Dies ist eine gute Referenz für Tastatur-Handhabung, da Sie Probleme mit den Pfeilen hatten. http://unixpapa.com/js/key.html –

Antwort

1

Der einfachste Weg, dies zu tun, ist, den keyCode zu vermeiden und den Wert der Textbox auf keyup zu verwenden. So etwas wie dies ...

Event.observe('myInput', 'keyup', function(){ 
    var value = this.value, first; 
    if(value.length == 0) 
     return; 

    first = value.charAt(0); 
    value = value.replace(/[^0-9]/g,''); 

    if(first == '-') 
     value = first + value; 

    this.value = value; 
    return true; 
}); 
+0

Dies funktioniert ein Vergnügen! Ich musste nur ein paar Änderungen vornehmen, um meinen speziellen Fall zu erfüllen, aber das ist eine großartige Lösung. Vielen Dank! – NatalieMac

0

Versuchen Sie, diese

<script type="text/javascript"> 
function whatKey(e) { 
    var thetext = document.getElementById('tt'); // Current value 
    var theKey = String.fromCharCode(e.keyCode); // key entered 
    var combval = thetext.value + theKey;   // Result would be this 

    return (!isNaN(combval) || combval=='-');  // if result OK, accept key 

} 
</script> 
Verwandte Themen