bei Formulareingabe nur Zahlen zulassen ?
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
aufruf
bit
buchstabe
check
code
eingabe
eingetragene buchstabe
feld
gefunden code
komma
punkt
reichen code
schwanz
taste
test
url
wartungsarbeit
zahl
zeichen
ziffer
-
Hallo
wie kann ich für eine Formular-EIngabe (in ein Text-Feld)
schon bei (während) der Eingabe nur Zahlen zulassen ?
<input type="text" name="pricemax" size="6" maxlength="6" />
so, dass auch kein Punkt oder Komma eingetragen werden kann,
sondern nur max 6 Ziffern 0 bis 9 (bzw. Ganz-Zahlen von 0 bis 999999)
Idee:
mit JS die Eingabe je Zeichen prüfen, wenn nicht Zahl 0-9, dann dieses Zeichen löschen
... also nicht mit Meldung: alert('Bitte nur Ziffern 0-9 eingeben'); sondern einfach nicht zulassen.
geht das ?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ja das geht :)
function validate(evt) { var theEvent = evt || window.event; var key = theEvent.keyCode || theEvent.which; key = String.fromCharCode( key ); var regex = /[0-9]|\./; if( !regex.test(key) ) { theEvent.returnValue = false; if(theEvent.preventDefault) theEvent.preventDefault(); } }
Und dann noch das Event dem Input hinzufügen:
onkeypress='validate(event)' -
habe es ausprobiert,
Dein Script in den HTML <head> Bereich und
<input type="text" name="pricemax" size="6" maxlength="6" onkeypress="validate(event);" />
funktioniert aber leider nicht
auch nicht, wenn ich validate(this) oder validate(pricemax) mache
ich frage mich auch woher test(key) kommt, ist test eine vordefinierte JS Funktion ?
und das hier:
if(theEvent.preventDefault) theEvent.preventDefault();
.... beisst sich doch in den Schwanz ?!
Event Aufruf wenn Event aufgerufen Ist ? ... hä?
ich habe noch mal ein bischen gegoogelt und dann das hier gefunden
<script type="text/javascript"> function validate_num(formdata) { formdata.value=formdata.value.replace(/\D/, '' ); } </script>
<input type="text" name="pricemax" size="6" maxlength="6" onkeyup="validate_num(this);" />
damit geht es
und onkeyup ist denke ich besser, weil bei Test mit onkeypress
blieb der zuletzt eingetragene Buchstabe noch im Feld, nur vorlezter wurde entfernt
-
Noch eine weitere Möglichkeit:
var check = function(e,t) { var kC = (e.which) ? e.which : event.keyCode; if(kC > 31 && (kC < 48 || kC > 57)) { t.className = 'invalid'; return false; } else t.className = 'valid'; };
Dadurch ist es (im Gegensatzt zu der vorher geposteten Variante, bei der Buchstaben nachträglich entfernt werden) gar nicht möglich, einen Buchstaben einzugeben. (Im Die gedrückte Taste wird abgefragt und nur wenn Zahl, wird die Ziffer »eingefügt«).
Unter http://bit.ly/zBRiKb ist eine Demo mit verschiedenen Möglichkeiten zu finden, nur Ziffern zuzulassen. (Es könnte allerdings sein, dass diese im Moment aufgrund von den Wartungsarbeiten nicht aufzurufen ist.)
Till -
tillpro schrieb:
Warum musst du in der if-Abfrage extra
Noch eine weitere Möglichkeit:
var check = function(e,t) { var kC = (e.which) ? e.which : event.keyCode; if(kC > 31 && (kC < 48 || kC > 57)) { t.className = 'invalid'; return false; } else t.className = 'valid'; };
abfragen?(kC > 31)
Es würde doch so auch reichen:if(kC < 48 || kC > 57) {
-
Stimmt eigentlich. Aber so werden noch Leerzeichen unterbunden
-
tillpro schrieb:
Also wenn du diese
Stimmt eigentlich. Aber so werden noch Leerzeichen unterbunden
drinnen hast sind alle Zeichen mit einem ASCII-Wert < 32 erlaubt! Das ist definitiv nicht das was gewünscht wird. Zeichen wie das hier: ♪ oder ♫ sind also Zahlen (ASCII-Wert < 32)?kC > 31
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage